brcmfmac: testing the wrong variable in brcmf_rx_hdrpull()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 19 Apr 2016 14:25:43 +0000 (07:25 -0700)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 26 Apr 2016 09:29:43 +0000 (12:29 +0300)
Smatch complains about this code:

    drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:335 brcmf_rx_hdrpull()
    error: we previously assumed '*ifp' could be null (see line 333)

The problem is that we recently changed these from "ifp" to "*ifp" but
there was one that we didn't update.

-       if (ret || !ifp || !ifp->ndev) {
+       if (ret || !(*ifp) || !(*ifp)->ndev) {
                if (ret != -ENODATA && ifp)
                                       ^^^
-                       ifp->stats.rx_errors++;
+                       (*ifp)->stats.rx_errors++;

I have updated it to *ifp as well.  We always call this function is a
non-NULL "ifp" pointer, btw.

Fixes: c462ebcdfe42 ('brcmfmac: create common function for handling brcmf_proto_hdrpull()')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c

index 1b476d1fec2c03482fa1478643d8fe2b6297a4ea..b590499f6883294525b094cb66c4449069eb2353 100644 (file)
@@ -331,7 +331,7 @@ static int brcmf_rx_hdrpull(struct brcmf_pub *drvr, struct sk_buff *skb,
        ret = brcmf_proto_hdrpull(drvr, true, skb, ifp);
 
        if (ret || !(*ifp) || !(*ifp)->ndev) {
-               if (ret != -ENODATA && ifp)
+               if (ret != -ENODATA && *ifp)
                        (*ifp)->stats.rx_errors++;
                brcmu_pkt_buf_free_skb(skb);
                return -ENODATA;