[PATCH 07/12] staging: ks7010: move null check before dereference

Tobin C. Harding me at tobin.cc
Mon Mar 27 00:29:44 UTC 2017


Smatch emits warn: variable dereferenced before check 'skb'.
This is not strictly a bug because the null check is not for
error checking but rather for a decision branch later in the code. However
it is still cleaner to have the code that does the null check to be
placed before the dereference.

Move null check code to be before dereference.

Signed-off-by: Tobin C. Harding <me at tobin.cc>
---
 drivers/staging/ks7010/ks_hostif.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 2917dda..6fc8360 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -1128,13 +1128,6 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *skb)
 	int ret;
 	int no_key;
 
-	skb_len = skb->len;
-	if (skb_len > ETH_FRAME_LEN) {
-		DPRINTK(1, "bad length skb_len=%d\n", skb_len);
-		ret = -EOVERFLOW;
-		goto err_kfree_skb;
-	}
-
 	if (((priv->connect_status & CONNECT_STATUS_MASK) == DISCONNECT_STATUS) ||
 	    (priv->connect_status & FORCE_DISCONNECT) ||
 	    priv->wpa.mic_failure.stop) {
@@ -1147,6 +1140,13 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *skb)
 		return 0;
 	}
 
+	skb_len = skb->len;
+	if (skb_len > ETH_FRAME_LEN) {
+		DPRINTK(1, "bad length skb_len=%d\n", skb_len);
+		ret = -EOVERFLOW;
+		goto err_kfree_skb;
+	}
+
 	/* for PowerSave */
 	if (atomic_read(&priv->psstatus.status) == PS_SNOOZE) {	/* power save wakeup */
 		if (!netif_queue_stopped(priv->net_dev))
-- 
2.7.4



More information about the devel mailing list