Skip to content

Commit 4c11e55

Browse files
aakoskintorvalds
authored andcommitted
drivers/firmware/broadcom/bcm47xx_nvram.c: fix incorrect __ioread32_copy
Commit 1f330c3 ("drivers/firmware/broadcom/bcm47xx_nvram.c: use __ioread32_copy() instead of open-coding") switched to use a generic copy function, but failed to notice that the header pointer is updated between the two copies, resulting in bogus data being copied in the latter one. Fix by keeping the old header pointer. The patch fixes totally broken networking on WRT54GL router (both LAN and WLAN interfaces fail to probe). Fixes: 1f330c3 ("drivers/firmware/broadcom/bcm47xx_nvram.c: use __ioread32_copy() instead of open-coding") Signed-off-by: Aaro Koskinen <[email protected]> Reviewed-by: Stephen Boyd <[email protected]> Cc: Rafal Milecki <[email protected]> Cc: Hauke Mehrtens <[email protected]> Cc: <[email protected]> [4.4.x] Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent b0f84ac commit 4c11e55

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

drivers/firmware/broadcom/bcm47xx_nvram.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,14 @@ static int nvram_find_and_copy(void __iomem *iobase, u32 lim)
9494

9595
found:
9696
__ioread32_copy(nvram_buf, header, sizeof(*header) / 4);
97-
header = (struct nvram_header *)nvram_buf;
98-
nvram_len = header->len;
97+
nvram_len = ((struct nvram_header *)(nvram_buf))->len;
9998
if (nvram_len > size) {
10099
pr_err("The nvram size according to the header seems to be bigger than the partition on flash\n");
101100
nvram_len = size;
102101
}
103102
if (nvram_len >= NVRAM_SPACE) {
104103
pr_err("nvram on flash (%i bytes) is bigger than the reserved space in memory, will just copy the first %i bytes\n",
105-
header->len, NVRAM_SPACE - 1);
104+
nvram_len, NVRAM_SPACE - 1);
106105
nvram_len = NVRAM_SPACE - 1;
107106
}
108107
/* proceed reading data after header */

0 commit comments

Comments
 (0)