aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2014-03-06 15:51:08 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-03-13 14:57:26 -0400
commit2dc3a8e0b6e10c77798a4f6f711ce66334eda1c4 (patch)
treef52b3ffb17940deb3eb02f12d2bff8cab73e032f /drivers/net/wireless
parentd51246481c7f28bbfa1f814ded2da65e531cd4b2 (diff)
brcmfmac: fix skb leak in brcmf_sdio_txpkt_prep_sg error path.
Commit 1eb4301867 (brcmfmac: fix txglomming scatter-gather packet transfers) added an allocation of an skb via brcmu_pkt_buf_get_skb() but forgot to free it on one of the error paths. Acked-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Dave Jones<davej@fedoraproject.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
index 119ee6eaf1c3..ddaa9efd053d 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -1948,8 +1948,10 @@ static int brcmf_sdio_txpkt_prep_sg(struct brcmf_sdio *bus,
1948 if (pkt_pad == NULL) 1948 if (pkt_pad == NULL)
1949 return -ENOMEM; 1949 return -ENOMEM;
1950 ret = brcmf_sdio_txpkt_hdalign(bus, pkt_pad); 1950 ret = brcmf_sdio_txpkt_hdalign(bus, pkt_pad);
1951 if (unlikely(ret < 0)) 1951 if (unlikely(ret < 0)) {
1952 kfree_skb(pkt_pad);
1952 return ret; 1953 return ret;
1954 }
1953 memcpy(pkt_pad->data, 1955 memcpy(pkt_pad->data,
1954 pkt->data + pkt->len - tail_chop, 1956 pkt->data + pkt->len - tail_chop,
1955 tail_chop); 1957 tail_chop);