diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c index 1c4178f20441..05b77419953c 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c @@ -1150,6 +1150,10 @@ static ssize_t iwl_dbgfs_inject_packet_write(struct iwl_mvm *mvm,  	struct iwl_rx_mpdu_desc *desc;  	int bin_len = count / 2;  	int ret = -EINVAL; +	size_t mpdu_cmd_hdr_size = +		(mvm->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560) ? +		sizeof(struct iwl_rx_mpdu_desc) : +		IWL_RX_DESC_SIZE_V1;  	if (!iwl_mvm_firmware_running(mvm))  		return -EIO; @@ -1168,7 +1172,7 @@ static ssize_t iwl_dbgfs_inject_packet_write(struct iwl_mvm *mvm,  		goto out;  	/* avoid invalid memory access */ -	if (bin_len < sizeof(*pkt) + sizeof(*desc)) +	if (bin_len < sizeof(*pkt) + mpdu_cmd_hdr_size)  		goto out;  	/* check this is RX packet */ @@ -1179,7 +1183,7 @@ static ssize_t iwl_dbgfs_inject_packet_write(struct iwl_mvm *mvm,  	/* check the length in metadata matches actual received length */  	desc = (void *)pkt->data;  	if (le16_to_cpu(desc->mpdu_len) != -	    (bin_len - sizeof(*desc) - sizeof(*pkt))) +	    (bin_len - mpdu_cmd_hdr_size - sizeof(*pkt)))  		goto out;  	local_bh_disable(); |