|
@@ -1948,8 +1948,10 @@ static int brcmf_sdio_txpkt_prep_sg(struct brcmf_sdio *bus,
|
|
if (pkt_pad == NULL)
|
|
if (pkt_pad == NULL)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
ret = brcmf_sdio_txpkt_hdalign(bus, pkt_pad);
|
|
ret = brcmf_sdio_txpkt_hdalign(bus, pkt_pad);
|
|
- if (unlikely(ret < 0))
|
|
|
|
|
|
+ if (unlikely(ret < 0)) {
|
|
|
|
+ kfree_skb(pkt_pad);
|
|
return ret;
|
|
return ret;
|
|
|
|
+ }
|
|
memcpy(pkt_pad->data,
|
|
memcpy(pkt_pad->data,
|
|
pkt->data + pkt->len - tail_chop,
|
|
pkt->data + pkt->len - tail_chop,
|
|
tail_chop);
|
|
tail_chop);
|