Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a927e8d8 authored by Colin Ian King's avatar Colin Ian King Committed by Kalle Valo
Browse files

brcmfmac: fix leak of mypkt on error return path



Currently if the call to brcmf_sdiod_set_backplane_window fails then
error return path leaks mypkt. Fix this by returning by a new
error path labelled 'out' that calls brcmu_pkt_buf_free_skb to free
mypkt.  Also remove redundant check on err before calling
brcmf_sdiod_skbuff_write.

Addresses-Coverity: ("Resource Leak")
Fixes: a7c3aa15 ("brcmfmac: Remove brcmf_sdiod_addrprep()")
Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
Reviewed-by: default avatarMukesh Ojha <mojha@codeaurora.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent e3062e05
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -628,15 +628,13 @@ int brcmf_sdiod_send_buf(struct brcmf_sdio_dev *sdiodev, u8 *buf, uint nbytes)

	err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
	if (err)
		return err;
		goto out;

	addr &= SBSDIO_SB_OFT_ADDR_MASK;
	addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;

	if (!err)
		err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr,
					       mypkt);

	err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr, mypkt);
out:
	brcmu_pkt_buf_free_skb(mypkt);

	return err;