summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert van Bolhuis <nvbolhuis@gmail.com>2024-11-08 15:52:30 +0300
committerKalle Valo <kvalo@kernel.org>2024-12-09 18:58:19 +0300
commit52e8726d6782a14c7f9e0fea5a5bc8e6a1992fd4 (patch)
tree977c63b49311a1c95b227bc29cf373513e396865
parentb81e0211e9c70be9eb70924e4e29698bfbbbc03a (diff)
downloadlinux-52e8726d6782a14c7f9e0fea5a5bc8e6a1992fd4.tar.xz
wifi: brcmfmac: fix scatter-gather handling by detecting end of sg list
The scatter-gather handling uses a pre-allocated list (with nents entries). If the driver runs out of sg entries it will result in an oops. Let's detect this instead and make the SDIO block transfer fail. Signed-off-by: Norbert van Bolhuis <nvbolhuis@gmail.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://patch.msgid.link/20241108125609.107016-1-nvbolhuis@gmail.com
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 42d991d9f8cb..60eb95fc19a5 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -455,6 +455,11 @@ static int brcmf_sdiod_sglist_rw(struct brcmf_sdio_dev *sdiodev,
if (sg_data_sz > max_req_sz - req_sz)
sg_data_sz = max_req_sz - req_sz;
+ if (!sgl) {
+ /* out of (pre-allocated) scatterlist entries */
+ ret = -ENOMEM;
+ goto exit;
+ }
sg_set_buf(sgl, pkt_data, sg_data_sz);
sg_cnt++;