Commit e0a8ef4d authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Kalle Valo

brcmfmac: add basic validation of shared RAM address

While experimenting with firmware loading I ended up in a state of
firmware reporting shared RAM address 0x04000001. It was causing:
[   94.448015] Unable to handle kernel paging request at virtual address cd680001
due to reading out of the mapped memory.

This patch adds some basic validation to avoid kernel crashes due to the
unexpected firmware behavior.
Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
Acked-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 0421dd41
...@@ -1560,6 +1560,12 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo, ...@@ -1560,6 +1560,12 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
brcmf_err(bus, "FW failed to initialize\n"); brcmf_err(bus, "FW failed to initialize\n");
return -ENODEV; return -ENODEV;
} }
if (sharedram_addr < devinfo->ci->rambase ||
sharedram_addr >= devinfo->ci->rambase + devinfo->ci->ramsize) {
brcmf_err(bus, "Invalid shared RAM address 0x%08x\n",
sharedram_addr);
return -ENODEV;
}
brcmf_dbg(PCIE, "Shared RAM addr: 0x%08x\n", sharedram_addr); brcmf_dbg(PCIE, "Shared RAM addr: 0x%08x\n", sharedram_addr);
return (brcmf_pcie_init_share_ram_info(devinfo, sharedram_addr)); return (brcmf_pcie_init_share_ram_info(devinfo, sharedram_addr));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment