mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
wifi: brcmfmac: Fix memory leak in brcmf_sdio_read_control()
The memory allocated for buf is not freed in some of the error paths in
brcmf_sdio_read_control(). Fix that by adding vfree() calls.
Cc: stable@vger.kernel.org
Fixes: dd43a01c5c ("brcmfmac: use dynamically allocated control frame buffer")
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
[arend: rework as suggested by Johannes]
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Link: https://patch.msgid.link/20260803093506.1647790-1-arend.vanspriel@broadcom.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
da308f6e47
commit
0d10db8e94
|
|
@ -1827,17 +1827,18 @@ brcmf_sdio_read_control(struct brcmf_sdio *bus, u8 *hdr, uint len, uint doff)
|
|||
if (bus->rxctl) {
|
||||
brcmf_err("last control frame is being processed.\n");
|
||||
spin_unlock_bh(&bus->rxctl_lock);
|
||||
vfree(buf);
|
||||
goto done;
|
||||
}
|
||||
bus->rxctl = buf + doff;
|
||||
bus->rxctl_orig = buf;
|
||||
bus->rxlen = len - doff;
|
||||
spin_unlock_bh(&bus->rxctl_lock);
|
||||
buf = NULL;
|
||||
|
||||
done:
|
||||
/* Awake any waiters */
|
||||
brcmf_sdio_dcmd_resp_wake(bus);
|
||||
vfree(buf);
|
||||
}
|
||||
|
||||
/* Pad read to blocksize for efficiency */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user