Patch "iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning" has been added to the 4.7-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
iwlwifi-mvm-avoid-harmless-wmaybe-uninialized-warning.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5a7d87da8d9b9f04ecdbebe7e5710a1391f85fa8Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Fri, 27 May 2016 15:07:03 +0200
Subject: iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Arnd Bergmann <[email protected]>
commit 5a7d87da8d9b9f04ecdbebe7e5710a1391f85fa8 upstream.
gcc is apparently unablel to track the state of the local 'resp_v2' variable across the kzalloc() function, and warns about the response variable being used without an initialization:
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c: In function ‘iwl_mvm_update_mcc’:drivers/net/wireless/intel/iwlwifi/mvm/nvm.c:727:36: warning: ‘mcc_resp_v1’ may be used uninitialized in this function [-Wmaybe-uninitialized]
resp_cp->n_channels = mcc_resp_v1->n_channels;drivers/net/wireless/intel/iwlwifi/mvm/nvm.c:721:3: warning: ‘mcc_resp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
memcpy(resp_cp, mcc_resp, resp_len);
The warning showed up in x86 allmodconfig after my patch to unhide -Wmaybe-uninitialized warnings by default was merged, though it always existed in randconfig builds. I did not catch the warning earlier because I was testing on ARM, which never produced the warning.
This rearranges the code in a way that improves readability for both humans and the compiler, and that avoids the warning.
--- drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 41 +++++++++++++-------------- 1 file changed, 21 insertions(+), 20 deletions(-)
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +21 -20
@@ -667,8 +667,7 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, .mcc = cpu_to_le16(alpha2[0] << 8 | alpha2[1]), .source_id = (u8)src_id, }; -struct iwl_mcc_update_resp *mcc_resp, *resp_cp =NULL ; -struct iwl_mcc_update_resp_v1 *mcc_resp_v1 =NULL ; +struct iwl_mcc_update_resp *resp_cp;struct iwl_rx_packet *pkt;struct iwl_host_cmd cmd = { .id =MCC_UPDATE_CMD ,
@@ -701,34 +700,36 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm,/* Extract MCC response */ if (resp_v2) { - mcc_resp = (void *)pkt->data; +struct iwl_mcc_update_resp *mcc_resp = (void *)pkt->data; + n_channels =__le32_to_cpu (mcc_resp->n_channels); + resp_len =sizeof (struct iwl_mcc_update_resp ) + + n_channels *sizeof (__le32); + resp_cp =kmemdup (mcc_resp, resp_len,GFP_KERNEL ); }else { - mcc_resp_v1 = (void *)pkt->data; +struct iwl_mcc_update_resp_v1 *mcc_resp_v1 = (void *)pkt->data; + n_channels =__le32_to_cpu (mcc_resp_v1->n_channels); + resp_len =sizeof (struct iwl_mcc_update_resp ) + + n_channels *sizeof (__le32); + resp_cp =kzalloc (resp_len,GFP_KERNEL ); + +if (resp_cp) { + resp_cp->status = mcc_resp_v1->status; + resp_cp->mcc = mcc_resp_v1->mcc; + resp_cp->cap = mcc_resp_v1->cap; + resp_cp->source_id = mcc_resp_v1->source_id; + resp_cp->n_channels = mcc_resp_v1->n_channels; +memcpy (resp_cp->channels, mcc_resp_v1->channels, + n_channels *sizeof (__le32)); + } } - resp_len =sizeof (struct iwl_mcc_update_resp ) + n_channels * -sizeof (__le32); - - resp_cp =kzalloc (resp_len,GFP_KERNEL );if (!resp_cp) { ret = -ENOMEM ; goto exit; } -if (resp_v2) { -memcpy (resp_cp, mcc_resp, resp_len); - }else { - resp_cp->status = mcc_resp_v1->status; - resp_cp->mcc = mcc_resp_v1->mcc; - resp_cp->cap = mcc_resp_v1->cap; - resp_cp->source_id = mcc_resp_v1->source_id; - resp_cp->n_channels = mcc_resp_v1->n_channels; -memcpy (resp_cp->channels, mcc_resp_v1->channels, - n_channels *sizeof (__le32)); - } - status =le32_to_cpu (resp_cp->status); mcc =le16_to_cpu (resp_cp->mcc);
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/iwlwifi-mvm-avoid-harmless-wmaybe-uninialized-warning.patch queue-4.7/arm-8617-1-dma-fix-dma_max_pfn.patch