1 From a927e8d8ab57e696800e20cf09a72b7dfe3bbebb Mon Sep 17 00:00:00 2001
2 From: Colin Ian King <colin.king@canonical.com>
3 Date: Tue, 9 Apr 2019 12:43:33 +0100
4 Subject: [PATCH] brcmfmac: fix leak of mypkt on error return path
6 Currently if the call to brcmf_sdiod_set_backplane_window fails then
7 error return path leaks mypkt. Fix this by returning by a new
8 error path labelled 'out' that calls brcmu_pkt_buf_free_skb to free
9 mypkt. Also remove redundant check on err before calling
10 brcmf_sdiod_skbuff_write.
12 Addresses-Coverity: ("Resource Leak")
13 Fixes: a7c3aa1509e2 ("brcmfmac: Remove brcmf_sdiod_addrprep()")
14 Signed-off-by: Colin Ian King <colin.king@canonical.com>
15 Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
16 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
18 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 8 +++-----
19 1 file changed, 3 insertions(+), 5 deletions(-)
21 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
22 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
23 @@ -617,15 +617,13 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
25 err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
30 addr &= SBSDIO_SB_OFT_ADDR_MASK;
31 addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
34 - err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr,
37 + err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr, mypkt);
39 brcmu_pkt_buf_free_skb(mypkt);