You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.1 KiB
Diff
87 lines
3.1 KiB
Diff
From 855094d7e46eb14c597ca09631cf95a92909982d Mon Sep 17 00:00:00 2001
|
|
From: Ilia Mirkin <imirkin@alum.mit.edu>
|
|
Date: Fri, 6 Dec 2013 18:56:53 -0500
|
|
Subject: [PATCH] MIPS: BCM47XX: Fix some very confused types and data
|
|
corruption
|
|
|
|
Fix nvram_read_alpha2 copying too many bytes over the ssb_sprom
|
|
structure. Also fix the arguments of the read_macaddr, although the code
|
|
was technically not wrong before due to an extra dereference.
|
|
|
|
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
|
|
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|
Acked-by: John Crispin <blogic@openwrt.org>
|
|
Patchwork: http://patchwork.linux-mips.org/patch/6211/
|
|
---
|
|
arch/mips/bcm47xx/sprom.c | 18 +++++++++---------
|
|
1 file changed, 9 insertions(+), 9 deletions(-)
|
|
|
|
--- a/arch/mips/bcm47xx/sprom.c
|
|
+++ b/arch/mips/bcm47xx/sprom.c
|
|
@@ -135,7 +135,7 @@ static void nvram_read_leddc(const char
|
|
}
|
|
|
|
static void nvram_read_macaddr(const char *prefix, const char *name,
|
|
- u8 (*val)[6], bool fallback)
|
|
+ u8 val[6], bool fallback)
|
|
{
|
|
char buf[100];
|
|
int err;
|
|
@@ -144,11 +144,11 @@ static void nvram_read_macaddr(const cha
|
|
if (err < 0)
|
|
return;
|
|
|
|
- bcm47xx_nvram_parse_macaddr(buf, *val);
|
|
+ bcm47xx_nvram_parse_macaddr(buf, val);
|
|
}
|
|
|
|
static void nvram_read_alpha2(const char *prefix, const char *name,
|
|
- char (*val)[2], bool fallback)
|
|
+ char val[2], bool fallback)
|
|
{
|
|
char buf[10];
|
|
int err;
|
|
@@ -162,7 +162,7 @@ static void nvram_read_alpha2(const char
|
|
pr_warn("alpha2 is too long %s\n", buf);
|
|
return;
|
|
}
|
|
- memcpy(val, buf, sizeof(val));
|
|
+ memcpy(val, buf, 2);
|
|
}
|
|
|
|
static void bcm47xx_fill_sprom_r1234589(struct ssb_sprom *sprom,
|
|
@@ -181,7 +181,7 @@ static void bcm47xx_fill_sprom_r1234589(
|
|
fallback);
|
|
nvram_read_s8(prefix, NULL, "ag1", &sprom->antenna_gain.a1, 0,
|
|
fallback);
|
|
- nvram_read_alpha2(prefix, "ccode", &sprom->alpha2, fallback);
|
|
+ nvram_read_alpha2(prefix, "ccode", sprom->alpha2, fallback);
|
|
}
|
|
|
|
static void bcm47xx_fill_sprom_r12389(struct ssb_sprom *sprom,
|
|
@@ -634,20 +634,20 @@ static void bcm47xx_fill_sprom_path_r45(
|
|
static void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom,
|
|
const char *prefix, bool fallback)
|
|
{
|
|
- nvram_read_macaddr(prefix, "et0macaddr", &sprom->et0mac, fallback);
|
|
+ nvram_read_macaddr(prefix, "et0macaddr", sprom->et0mac, fallback);
|
|
nvram_read_u8(prefix, NULL, "et0mdcport", &sprom->et0mdcport, 0,
|
|
fallback);
|
|
nvram_read_u8(prefix, NULL, "et0phyaddr", &sprom->et0phyaddr, 0,
|
|
fallback);
|
|
|
|
- nvram_read_macaddr(prefix, "et1macaddr", &sprom->et1mac, fallback);
|
|
+ nvram_read_macaddr(prefix, "et1macaddr", sprom->et1mac, fallback);
|
|
nvram_read_u8(prefix, NULL, "et1mdcport", &sprom->et1mdcport, 0,
|
|
fallback);
|
|
nvram_read_u8(prefix, NULL, "et1phyaddr", &sprom->et1phyaddr, 0,
|
|
fallback);
|
|
|
|
- nvram_read_macaddr(prefix, "macaddr", &sprom->il0mac, fallback);
|
|
- nvram_read_macaddr(prefix, "il0macaddr", &sprom->il0mac, fallback);
|
|
+ nvram_read_macaddr(prefix, "macaddr", sprom->il0mac, fallback);
|
|
+ nvram_read_macaddr(prefix, "il0macaddr", sprom->il0mac, fallback);
|
|
}
|
|
|
|
static void bcm47xx_fill_board_data(struct ssb_sprom *sprom, const char *prefix,
|