linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning
@ 2016-05-27 13:07 Arnd Bergmann
  2016-05-30 20:37 ` Coelho, Luciano
  0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2016-05-27 13:07 UTC (permalink / raw)
  To: Emmanuel Grumbach, Matti Gottlieb
  Cc: Linus Torvalds, Arnd Bergmann, Johannes Berg, Luca Coelho,
	Intel Linux Wireless, Kalle Valo, Moshe Harel, linux-wireless,
	netdev, linux-kernel

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.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 6fa52430f0b3 ("iwlwifi: mvm: change mcc update API")
---
 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 41 ++++++++++++++--------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
index 25a98401a64f..0551a4bb163c 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c
@@ -667,8 +667,7 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
 		.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, const char *alpha2,
 
 	/* 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);
-- 
2.7.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning
  2016-05-27 13:07 [PATCH] iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning Arnd Bergmann
@ 2016-05-30 20:37 ` Coelho, Luciano
  0 siblings, 0 replies; 2+ messages in thread
From: Coelho, Luciano @ 2016-05-30 20:37 UTC (permalink / raw)
  To: Gottlieb, Matti, arnd@arndb.de, Grumbach, Emmanuel
  Cc: linux-kernel@vger.kernel.org, linuxwifi,
	torvalds@linux-foundation.org, Harel, Moshe, Berg, Johannes,
	kvalo@codeaurora.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org

T24gRnJpLCAyMDE2LTA1LTI3IGF0IDE1OjA3ICswMjAwLCBBcm5kIEJlcmdtYW5uIHdyb3RlOg0K
PiBnY2MgaXMgYXBwYXJlbnRseSB1bmFibGVsIHRvIHRyYWNrIHRoZSBzdGF0ZSBvZiB0aGUgbG9j
YWwgJ3Jlc3BfdjInDQo+IHZhcmlhYmxlIGFjcm9zcyB0aGUga3phbGxvYygpIGZ1bmN0aW9uLCBh
bmQgd2FybnMgYWJvdXQgdGhlIHJlc3BvbnNlDQo+IHZhcmlhYmxlIGJlaW5nIHVzZWQgd2l0aG91
dCBhbiBpbml0aWFsaXphdGlvbjoNCj4gDQo+IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3
bHdpZmkvbXZtL252bS5jOiBJbiBmdW5jdGlvbg0KPiDigJhpd2xfbXZtX3VwZGF0ZV9tY2PigJk6
DQo+IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jOjcyNzozNjog
d2FybmluZzoNCj4g4oCYbWNjX3Jlc3BfdjHigJkgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBp
biB0aGlzIGZ1bmN0aW9uIFstV21heWJlLQ0KPiB1bmluaXRpYWxpemVkXQ0KPiDCoMKgwqByZXNw
X2NwLT5uX2NoYW5uZWxzID0gbWNjX3Jlc3BfdjEtPm5fY2hhbm5lbHM7DQo+IGRyaXZlcnMvbmV0
L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL252bS5jOjcyMTozOiB3YXJuaW5nOg0KPiDigJht
Y2NfcmVzcOKAmSBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1X
bWF5YmUtDQo+IHVuaW5pdGlhbGl6ZWRdDQo+IMKgwqDCoG1lbWNweShyZXNwX2NwLCBtY2NfcmVz
cCwgcmVzcF9sZW4pOw0KPiANCj4gVGhlIHdhcm5pbmcgc2hvd2VkIHVwIGluIHg4NiBhbGxtb2Rj
b25maWcgYWZ0ZXIgbXkgcGF0Y2ggdG8NCj4gdW5oaWRlIC1XbWF5YmUtdW5pbml0aWFsaXplZCB3
YXJuaW5ncyBieSBkZWZhdWx0IHdhcyBtZXJnZWQsDQo+IHRob3VnaCBpdCBhbHdheXMgZXhpc3Rl
ZCBpbiByYW5kY29uZmlnIGJ1aWxkcy4gSSBkaWQgbm90DQo+IGNhdGNoIHRoZSB3YXJuaW5nIGVh
cmxpZXIgYmVjYXVzZSBJIHdhcyB0ZXN0aW5nIG9uIEFSTSwgd2hpY2gNCj4gbmV2ZXIgcHJvZHVj
ZWQgdGhlIHdhcm5pbmcuDQo+IA0KPiBUaGlzIHJlYXJyYW5nZXMgdGhlIGNvZGUgaW4gYSB3YXkg
dGhhdCBpbXByb3ZlcyByZWFkYWJpbGl0eSBmb3INCj4gYm90aCBodW1hbnMgYW5kIHRoZSBjb21w
aWxlciwgYW5kIHRoYXQgYXZvaWRzIHRoZSB3YXJuaW5nLg0KPiANCj4gU2lnbmVkLW9mZi1ieTog
QXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4NCj4gRml4ZXM6IDZmYTUyNDMwZjBiMyAoIml3
bHdpZmk6IG12bTogY2hhbmdlIG1jYyB1cGRhdGUgQVBJIikNCj4gLS0tDQoNClRoYW5rcywgQXJu
ZCEgSSBxdWV1ZWQgdGhpcyB2aWEgb3VyIGludGVybmFsIHRyZWUuDQoNCi0tDQpDaGVlcnMsDQpM
dWNhLg==

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-05-30 20:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-27 13:07 [PATCH] iwlwifi: mvm: avoid harmless -Wmaybe-uninialized warning Arnd Bergmann
2016-05-30 20:37 ` Coelho, Luciano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).