Skip to contentSkip to conversation

Staging: wilc1000: Remove coccicheck warnings and error

PATCH In review Punit Vara 2 participants 9 messages Oct 24, 2015 – Oct 25, 2015 Staging

lore
Share & tools
lore

Punit Vara

author
#0 lore raw

cover Staging: wilc1000: Remove coccicheck warnings and error

Punit Vara (3):
staging: wilc1000: Remove reference preceded by free
Staging: wilc1000: Remove comparision of field address to NULL
Staging: wilc1000: Remove boolean comparision

 drivers/staging/wilc1000/host_interface.c         | 4 ++--
 drivers/staging/wilc1000/linux_wlan.c             | 8 ++++----
 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 7 +++----
 3 files changed, 9 insertions(+), 10 deletions(-)
Signature · 1 line
2.5.3
author
#1 lore raw

PATCH 1/3 staging: wilc1000: Remove reference preceded by free

This patch is to the wilc_wfi_cfgoperations.c file that fixes up following error reported by coccicheck:

ERROR: reference preceded by free on line 1219

For (params->seq_len) <= 0 memory is already freed when (params->seq_len) >0 then memory was alloted. So there is no need to use kfree whenever params->seq_len <=0 remove it and place kfree inside (params->seq_len) >0 condition.

---
 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +3 -4
index bcbf1bd..9b3cf04 100644
@@ -1216,11 +1216,10 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
 
 				priv->wilc_ptk[key_index]->key = kmalloc(params->key_len, GFP_KERNEL);
 
-				kfree(priv->wilc_ptk[key_index]->seq);
-
-				if ((params->seq_len) > 0)
+				if ((params->seq_len) > 0) {
+					kfree(priv->wilc_ptk[key_index]->seq);
 					priv->wilc_ptk[key_index]->seq = kmalloc(params->seq_len, GFP_KERNEL);
-
+				}
 				if (INFO) {
 					for (i = 0; i < params->key_len; i++)
 						PRINT_INFO(CFG80211_DBG, "Adding pairwise key value[%d] = %x\n", i, params->key[i]);
Signature · 1 line
2.5.3
maintainer
#2 lore raw

Re: [PATCH 1/3] staging: wilc1000: Remove reference preceded by free

Quoted 21 lines · Punit Vara

This patch is to the wilc_wfi_cfgoperations.c file that fixes up following error reported by coccicheck:

ERROR: reference preceded by free on line 1219

For (params->seq_len) <= 0 memory is already freed when (params->seq_len) >0 then memory was alloted. So there is no need to use kfree whenever params->seq_len <=0 remove it and place kfree inside (params->seq_len) >0 condition.

---
 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +0 -0
index bcbf1bd..9b3cf04 100644
@@ -1216,11 +1216,10 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
 

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, · line 1222

Quoted 10 lines
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +3 -4
 				priv->wilc_ptk[key_index]->key = kmalloc(params->key_len, GFP_KERNEL);
 
-				kfree(priv->wilc_ptk[key_index]->seq);
-
-				if ((params->seq_len) > 0)
+				if ((params->seq_len) > 0) {
+					kfree(priv->wilc_ptk[key_index]->seq);
 					priv->wilc_ptk[key_index]->seq = kmalloc(params->seq_len, GFP_KERNEL);
-
+				}

Are you sure about this? It seems like you are changing the logic here...

author
#3 lore raw

Re: [PATCH 1/3] staging: wilc1000: Remove reference preceded by free

Quoted 24 lines · Greg KH
Quoted 23 lines · Punit Vara

This patch is to the wilc_wfi_cfgoperations.c file that fixes up following error reported by coccicheck:

ERROR: reference preceded by free on line 1219

For (params->seq_len) <= 0 memory is already freed when (params->seq_len) >0 then memory was alloted. So there is no need to use kfree whenever params->seq_len <=0 remove it and place kfree inside (params->seq_len) >0 condition.

---
 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +0 -0
index bcbf1bd..9b3cf04 100644
@@ -1216,11 +1216,10 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
 
                              priv->wilc_ptk[key_index]->key = kmalloc(params->key_len, GFP_KERNEL);
 
Quoted 12 lines

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, · line 1222

Quoted 8 lines
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +3 -4
-                             kfree(priv->wilc_ptk[key_index]->seq);
-
-                             if ((params->seq_len) > 0)
+                             if ((params->seq_len) > 0) {
+                                     kfree(priv->wilc_ptk[key_index]->seq);
                                      priv->wilc_ptk[key_index]->seq = kmalloc(params->seq_len, GFP_KERNEL);
-
+                             }

Are you sure about this? It seems like you are changing the logic here...

Yes this time I am quite confident here . On This file line no 1177 already freed the allocation of memory ..On the following line if (params->seq_len) > 0 then memory is allotted but if it is not then memory allocation remains free only. So here kfree is not required outside of the if condition. It should be inside the if condition
because for (params->seq_len) > 0 memory is already allotted at line
followed by 1177. Kindly look at it once.

Thanks :-)

author
#4 lore raw

Re: [PATCH 1/3] staging: wilc1000: Remove reference preceded by free

Quoted 45 lines · punit vara
Quoted 24 lines · Greg KH
Quoted 23 lines · Punit Vara

This patch is to the wilc_wfi_cfgoperations.c file that fixes up following error reported by coccicheck:

ERROR: reference preceded by free on line 1219

For (params->seq_len) <= 0 memory is already freed when (params->seq_len) >0 then memory was alloted. So there is no need to use kfree whenever params->seq_len <=0 remove it and place kfree inside (params->seq_len) >0 condition.

---
 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +0 -0
index bcbf1bd..9b3cf04 100644
@@ -1216,11 +1216,10 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
 
                              priv->wilc_ptk[key_index]->key = kmalloc(params->key_len, GFP_KERNEL);
 
Quoted 12 lines

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, · line 1222

Quoted 8 lines
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +3 -4
-                             kfree(priv->wilc_ptk[key_index]->seq);
-
-                             if ((params->seq_len) > 0)
+                             if ((params->seq_len) > 0) {
+                                     kfree(priv->wilc_ptk[key_index]->seq);
                                      priv->wilc_ptk[key_index]->seq = kmalloc(params->seq_len, GFP_KERNEL);
-
+                             }

Are you sure about this? It seems like you are changing the logic here...

Yes this time I am quite confident here . On This file line no 1177 already freed the allocation of memory ..On the following line if (params->seq_len) > 0 then memory is allotted but if it is not then memory allocation remains free only. So here kfree is not required outside of the if condition. It should be inside the if condition
because for (params->seq_len) > 0 memory is already allotted at line
followed by 1177. Kindly look at it once.

Quoted 1 line

Thanks :-)

Again I went back thinking Greg who is stable kernel maintainer who doubts about logic .So I again go through these code , you are right . What you ignore this change and apply this patch ?

(quoted diff) +0 -0

b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c index 9b3cf04..3ab7d3e 100644

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +0 -0
@@ -1174,9 +1174,9 @@ static int add_key(struct wiphy *wiphy, struct

net_device *netdev, u8 key_index,

                                memcpy(priv->wilc_gtk[key_index]->key,

params->key, params->key_len);

                                /* if there has been previous

allocation for the same index through its seq, free that memory and allocate again*/
- kfree(priv->wilc_gtk[key_index]->seq);

                                if ((params->seq_len) > 0) {
+                                       kfree(priv->wilc_gtk[key_index]->seq);
                                        priv->wilc_gtk[key_index]->seq

= kmalloc(params->seq_len, GFP_KERNEL);

memcpy(priv->wilc_gtk[key_index]->seq, params->seq, params->seq_len);
                                }

?? May send this patch ? I think it will not change the logic . Comment me if I am wrong

maintainer
#5 lore raw

Re: [PATCH 1/3] staging: wilc1000: Remove reference preceded by free

Quoted 70 lines · punit vara
Quoted 45 lines · punit vara
Quoted 24 lines · Greg KH
Quoted 23 lines · Punit Vara

This patch is to the wilc_wfi_cfgoperations.c file that fixes up following error reported by coccicheck:

ERROR: reference preceded by free on line 1219

For (params->seq_len) <= 0 memory is already freed when (params->seq_len) >0 then memory was alloted. So there is no need to use kfree whenever params->seq_len <=0 remove it and place kfree inside (params->seq_len) >0 condition.

---
 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +0 -0
index bcbf1bd..9b3cf04 100644
@@ -1216,11 +1216,10 @@ static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index,
 
                              priv->wilc_ptk[key_index]->key = kmalloc(params->key_len, GFP_KERNEL);
 
Quoted 12 lines

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c static int add_key(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, · line 1222

Quoted 8 lines
drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +3 -4
-                             kfree(priv->wilc_ptk[key_index]->seq);
-
-                             if ((params->seq_len) > 0)
+                             if ((params->seq_len) > 0) {
+                                     kfree(priv->wilc_ptk[key_index]->seq);
                                      priv->wilc_ptk[key_index]->seq = kmalloc(params->seq_len, GFP_KERNEL);
-
+                             }

Are you sure about this? It seems like you are changing the logic here...

Yes this time I am quite confident here . On This file line no 1177 already freed the allocation of memory ..On the following line if (params->seq_len) > 0 then memory is allotted but if it is not then memory allocation remains free only. So here kfree is not required outside of the if condition. It should be inside the if condition
because for (params->seq_len) > 0 memory is already allotted at line
followed by 1177. Kindly look at it once.

Quoted 1 line

Thanks :-)

Again I went back thinking Greg who is stable kernel maintainer who doubts about logic .So I again go through these code , you are right . What you ignore this change and apply this patch ?

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +0 -0
index 9b3cf04..3ab7d3e 100644
@@ -1174,9 +1174,9 @@ static int add_key(struct wiphy *wiphy, struct
 net_device *netdev, u8 key_index,
                                memcpy(priv->wilc_gtk[key_index]->key,
 params->key, params->key_len);
 
                                /* if there has been previous

allocation for the same index through its seq, free that memory and allocate again*/

drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +1 -1
-                               kfree(priv->wilc_gtk[key_index]->seq);
 
                                if ((params->seq_len) > 0) {
+                                       kfree(priv->wilc_gtk[key_index]->seq);
                                        priv->wilc_gtk[key_index]->seq

= kmalloc(params->seq_len, GFP_KERNEL);

Quoted 6 lines
memcpy(priv->wilc_gtk[key_index]->seq, params->seq, params->seq_len);
                                }

?? May send this patch ? I think it will not change the logic . Comment me if I am wrong

I don't really see the need for this change at all. It's not fixing anything, and the kfree call is "free" we don't need to worry about that, so please, just leave it as-is for now, there is _so_ many other real things to do to fix up this driver than to worry about non-optimizing things like this.

thanks,

greg k-h

author
#6 lore raw

PATCH 2/3 Staging: wilc1000: Remove comparision of field address to NULL

In reply to Punit Vara

This is patch to the linux_wlan file that fixes up following error reported by coccicheck :

ERROR: test of a variable/field address

---
 drivers/staging/wilc1000/linux_wlan.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/staging/wilc1000/linux_wlan.c +4 -4
index b879b8b..1b0f89c 100644
@@ -907,7 +907,7 @@ void wilc1000_wlan_deinit(struct wilc *nic)
 		disable_sdio_interrupt();
 		mutex_unlock(&g_linux_wlan->hif_cs);
 #endif
-		if (&g_linux_wlan->txq_event != NULL)
+		if (!(&g_linux_wlan->txq_event))
 			up(&g_linux_wlan->txq_event);
 
 		PRINT_D(INIT_DBG, "Deinitializing Threads\n");
@@ -969,10 +969,10 @@ static int wlan_deinit_locks(struct wilc *nic)
 {
 	PRINT_D(INIT_DBG, "De-Initializing Locks\n");
 
-	if (&g_linux_wlan->hif_cs != NULL)
+	if (!(&g_linux_wlan->hif_cs))
 		mutex_destroy(&g_linux_wlan->hif_cs);
 
-	if (&g_linux_wlan->rxq_cs != NULL)
+	if (!(&g_linux_wlan->rxq_cs))
 		mutex_destroy(&g_linux_wlan->rxq_cs);
 
 	return 0;
@@ -1037,7 +1037,7 @@ static void wlan_deinitialize_threads(struct wilc *nic)
 	g_linux_wlan->close = 1;
 	PRINT_D(INIT_DBG, "Deinitializing Threads\n");
 
-	if (&g_linux_wlan->txq_event != NULL)
+	if (!(&g_linux_wlan->txq_event))
 		up(&g_linux_wlan->txq_event);
 
 	if (g_linux_wlan->txq_thread != NULL) {
Signature · 1 line
2.5.3
maintainer
#7 lore raw

Re: [PATCH 2/3] Staging: wilc1000: Remove comparision of field address to NULL

Quoted 9 lines · Punit Vara

This is patch to the linux_wlan file that fixes up following error reported by coccicheck :

ERROR: test of a variable/field address

---
 drivers/staging/wilc1000/linux_wlan.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Does not apply to my tree anymore, I think someone else already did this :(

author
#8 lore raw

PATCH 3/3 Staging: wilc1000: Remove boolean comparision

In reply to Punit Vara

This patch is to the host_interface.c file that fixes up following warning reported by coccicheck:

WARNING: Comparison to bool

Boolean tests do not need explicit comparison to true or false

---
 drivers/staging/wilc1000/host_interface.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/wilc1000/host_interface.c +2 -2
index 38fead4..09a6c98 100644
@@ -1440,7 +1440,7 @@ static s32 Handle_RcvdNtwrkInfo(struct host_if_drv *hif_drv,
 			}
 		}
 
-		if (bNewNtwrkFound == true) {
+		if (bNewNtwrkFound) {
 			PRINT_D(HOSTINF_DBG, "New network found\n");
 
 			if (hif_drv->strWILC_UsrScanReq.u32RcvdChCount < MAX_NUM_SCANNED_NETWORKS) {
@@ -2714,7 +2714,7 @@ static void Handle_PowerManagement(struct host_if_drv *hif_drv,
 
 	strWID.id = (u16)WID_POWER_MANAGEMENT;
 
-	if (strPowerMgmtParam->enabled == true)
+	if (strPowerMgmtParam->enabled)
 		s8PowerMode = MIN_FAST_PS;
 	else
 		s8PowerMode = NO_POWERSAVE;
Signature · 1 line
2.5.3