brcmfmac: testing the wrong variable in brcmf_rx_hdrpull()
PATCH 1/1 brcmfmac: testing the wrong variable in brcmf_rx_hdrpull()
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.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +1 -1
@@ -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 ;
Quoted 15 lines · Dan Carpenter
Smatch complains about this code:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:335brcmf_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.
(quoted diff) +2
-2- if (ret || !ifp || !ifp->ndev) { + if (ret || !(*ifp) || !(*ifp)->ndev) { if (ret != -ENODATA && ifp) ^^^ - ifp->stats.rx_errors++; + (*ifp)->stats.rx_errors++;
Quoted 2 lines
I have updated it to *ifp as well. We always call this function is a non-NULL "ifp" pointer, btw.
Great. Maybe we (Broadcom) should consider running smatch on our patch series or simply rely on your excellent work :-p. Thanks for catching this.
Quoted 17 lines
Fixes c462ebcdfe42 ('brcmfmac: create common function for handling brcmf_proto_hdrpull()')Signed-off-by Dan Carpenter <[email protected]>drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +1
-1@@ -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 ;
Kalle Valo
AppliedQuoted 16 lines
Smatch complains about this code:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:335brcmf_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.
(quoted diff) +2
-2- if (ret || !ifp || !ifp->ndev) { + if (ret || !(*ifp) || !(*ifp)->ndev) { if (ret != -ENODATA && ifp) ^^^ - ifp->stats.rx_errors++; + (*ifp)->stats.rx_errors++;
Quoted 6 lines
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 <[email protected]>Acked-by Arend van Spriel <[email protected]>
Thanks, applied to wireless-drivers-next.git.
Kalle Valo