| From e7fcfb20caef512cb1a5f96b5b6473c7bdb4d96c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 2 Aug 2020 09:18:04 -0700 |
| Subject: brcmfmac: check ndev pointer |
| |
| From: Tom Rix <trix@redhat.com> |
| |
| [ Upstream commit 9c9f015bc9f8839831c7ba0a6d731a3853c464e2 ] |
| |
| Clang static analysis reports this error |
| |
| brcmfmac/core.c:490:4: warning: Dereference of null pointer |
| (*ifp)->ndev->stats.rx_errors++; |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| In this block of code |
| |
| if (ret || !(*ifp) || !(*ifp)->ndev) { |
| if (ret != -ENODATA && *ifp) |
| (*ifp)->ndev->stats.rx_errors++; |
| brcmu_pkt_buf_free_skb(skb); |
| return -ENODATA; |
| } |
| |
| (*ifp)->ndev being NULL is caught as an error |
| But then it is used to report the error. |
| |
| So add a check before using it. |
| |
| Fixes: 91b632803ee4 ("brcmfmac: Use net_device_stats from struct net_device") |
| Signed-off-by: Tom Rix <trix@redhat.com> |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Link: https://lore.kernel.org/r/20200802161804.6126-1-trix@redhat.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c |
| index 85cf96461ddeb..e9bb8dbdc9aa8 100644 |
| --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c |
| +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c |
| @@ -483,7 +483,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)->ndev) |
| (*ifp)->ndev->stats.rx_errors++; |
| brcmu_pkt_buf_free_skb(skb); |
| return -ENODATA; |
| -- |
| 2.25.1 |
| |