Skip to content

Commit cbea71b

Browse files
Ethan Tidmoregregkh
authored andcommitted
wifi: brcmfmac: Fix error pointer dereference
[ Upstream commit dd8592f ] The function brcmf_chip_add_core() can return an error pointer and is not checked. Add checks for error pointer. Detected by Smatch: drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:1010 brcmf_chip_recognition() error: 'core' dereferencing possible ERR_PTR() drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:1013 brcmf_chip_recognition() error: 'core' dereferencing possible ERR_PTR() drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:1016 brcmf_chip_recognition() error: 'core' dereferencing possible ERR_PTR() drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:1019 brcmf_chip_recognition() error: 'core' dereferencing possible ERR_PTR() drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:1022 brcmf_chip_recognition() error: 'core' dereferencing possible ERR_PTR() Fixes: cb7cf7b ("brcmfmac: make chip related functions host interface independent") Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> Link: https://patch.msgid.link/20260217023043.73631-1-ethantidmore06@gmail.com [add missing wifi: prefix] Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent a710df1 commit cbea71b

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,18 +1007,33 @@ static int brcmf_chip_recognition(struct brcmf_chip_priv *ci)
10071007

10081008
core = brcmf_chip_add_core(ci, BCMA_CORE_CHIPCOMMON,
10091009
SI_ENUM_BASE_DEFAULT, 0);
1010+
if (IS_ERR(core))
1011+
return PTR_ERR(core);
1012+
10101013
brcmf_chip_sb_corerev(ci, core);
10111014
core = brcmf_chip_add_core(ci, BCMA_CORE_SDIO_DEV,
10121015
BCM4329_CORE_BUS_BASE, 0);
1016+
if (IS_ERR(core))
1017+
return PTR_ERR(core);
1018+
10131019
brcmf_chip_sb_corerev(ci, core);
10141020
core = brcmf_chip_add_core(ci, BCMA_CORE_INTERNAL_MEM,
10151021
BCM4329_CORE_SOCRAM_BASE, 0);
1022+
if (IS_ERR(core))
1023+
return PTR_ERR(core);
1024+
10161025
brcmf_chip_sb_corerev(ci, core);
10171026
core = brcmf_chip_add_core(ci, BCMA_CORE_ARM_CM3,
10181027
BCM4329_CORE_ARM_BASE, 0);
1028+
if (IS_ERR(core))
1029+
return PTR_ERR(core);
1030+
10191031
brcmf_chip_sb_corerev(ci, core);
10201032

10211033
core = brcmf_chip_add_core(ci, BCMA_CORE_80211, 0x18001000, 0);
1034+
if (IS_ERR(core))
1035+
return PTR_ERR(core);
1036+
10221037
brcmf_chip_sb_corerev(ci, core);
10231038
} else if (socitype == SOCI_AI) {
10241039
ci->iscoreup = brcmf_chip_ai_iscoreup;

0 commit comments

Comments
 (0)