summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2013-09-09 09:23:19 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2013-10-07 19:09:34 +0200
commit4f9bf7e2fb7035725c2899db0d00d77007d9113c (patch)
treeb17697e1c06d8bfaf80cc535152ec61a6a910088
parent11b47801b2c3abc3bb8c523b722fafa1103bff45 (diff)
downloadcoreboot-4f9bf7e2fb7035725c2899db0d00d77007d9113c.tar.xz
AMD hudson yangtze: Fix corruption of a global ramstage variable
A late for loop may reference over the current array allocation and corrupt an unrelated global variable. As a quick fix bumb the size of the array allocation uniformly to 6. We missed these boards for commit 9c7d73ca because the arrays had been renamed. Change-Id: Iff2f2a0090d9302576bc72195d2a3f6fa37ce29a Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/3954 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-by: Bruce Griffith <Bruce.Griffith@se-eng.com>
-rw-r--r--src/mainboard/amd/olivehill/get_bus_conf.c6
-rw-r--r--src/mainboard/amd/olivehill/irq_tables.c2
-rw-r--r--src/mainboard/amd/olivehill/mptable.c2
-rw-r--r--src/mainboard/amd/parmer/get_bus_conf.c6
-rw-r--r--src/mainboard/amd/parmer/irq_tables.c2
-rw-r--r--src/mainboard/amd/parmer/mptable.c2
-rw-r--r--src/mainboard/amd/thatcher/get_bus_conf.c6
-rw-r--r--src/mainboard/amd/thatcher/irq_tables.c2
-rw-r--r--src/mainboard/amd/thatcher/mptable.c2
-rw-r--r--src/mainboard/asrock/imb-a180/get_bus_conf.c6
-rw-r--r--src/mainboard/asrock/imb-a180/irq_tables.c2
-rw-r--r--src/mainboard/asrock/imb-a180/mptable.c2
-rw-r--r--src/mainboard/asus/f2a85-m/get_bus_conf.c6
-rw-r--r--src/mainboard/asus/f2a85-m/irq_tables.c2
-rw-r--r--src/mainboard/asus/f2a85-m/mptable.c2
15 files changed, 20 insertions, 30 deletions
diff --git a/src/mainboard/amd/olivehill/get_bus_conf.c b/src/mainboard/amd/olivehill/get_bus_conf.c
index 0d379d5274..fb63ace4c5 100644
--- a/src/mainboard/amd/olivehill/get_bus_conf.c
+++ b/src/mainboard/amd/olivehill/get_bus_conf.c
@@ -30,7 +30,7 @@
* and acpi_tables busnum is default.
*/
u8 bus_isa;
-u8 bus_yangtze[3];
+u8 bus_yangtze[6];
u32 apicid_yangtze;
/*
@@ -100,9 +100,7 @@ void get_bus_conf(void)
sbdn_yangtze = 0;
- for (i = 0; i < 3; i++) {
- bus_yangtze[i] = 0;
- }
+ memset(bus_yangtze, 0, sizeof(bus_yangtze));
for (i = 0; i < 256; i++) {
bus_type[i] = 0; /* default ISA bus. */
diff --git a/src/mainboard/amd/olivehill/irq_tables.c b/src/mainboard/amd/olivehill/irq_tables.c
index 977915348b..9eb36496fd 100644
--- a/src/mainboard/amd/olivehill/irq_tables.c
+++ b/src/mainboard/amd/olivehill/irq_tables.c
@@ -44,7 +44,7 @@ static void write_pirq_info(struct irq_info *pirq_info, u8 bus, u8 devfn,
}
extern u8 bus_isa;
-extern u8 bus_yangtze[2];
+extern u8 bus_yangtze[6];
extern unsigned long sbdn_yangtze;
unsigned long write_pirq_routing_table(unsigned long addr)
diff --git a/src/mainboard/amd/olivehill/mptable.c b/src/mainboard/amd/olivehill/mptable.c
index 118f86088d..83c0b41108 100644
--- a/src/mainboard/amd/olivehill/mptable.c
+++ b/src/mainboard/amd/olivehill/mptable.c
@@ -30,7 +30,7 @@
//-#define IO_APIC_ID CONFIG_MAX_PHYSICAL_CPUS + 1
#define IO_APIC_ID CONFIG_MAX_CPUS
-extern u8 bus_yangtze[3];
+extern u8 bus_yangtze[6];
extern u32 bus_type[256];
extern u32 sbdn_yangtze;
diff --git a/src/mainboard/amd/parmer/get_bus_conf.c b/src/mainboard/amd/parmer/get_bus_conf.c
index d1be8b6268..c92fea95ed 100644
--- a/src/mainboard/amd/parmer/get_bus_conf.c
+++ b/src/mainboard/amd/parmer/get_bus_conf.c
@@ -30,7 +30,7 @@
* and acpi_tables busnum is default.
*/
u8 bus_isa;
-u8 bus_hudson[3];
+u8 bus_hudson[6];
u32 apicid_hudson;
/*
@@ -97,9 +97,7 @@ void get_bus_conf(void)
sbdn_hudson = 0;
- for (i = 0; i < 3; i++) {
- bus_hudson[i] = 0;
- }
+ memset(bus_hudson, 0, sizeof(bus_hudson));
for (i = 0; i < 256; i++) {
bus_type[i] = 0; /* default ISA bus. */
diff --git a/src/mainboard/amd/parmer/irq_tables.c b/src/mainboard/amd/parmer/irq_tables.c
index d7e223bb93..d5339ad653 100644
--- a/src/mainboard/amd/parmer/irq_tables.c
+++ b/src/mainboard/amd/parmer/irq_tables.c
@@ -44,7 +44,7 @@ static void write_pirq_info(struct irq_info *pirq_info, u8 bus, u8 devfn,
}
extern u8 bus_isa;
-extern u8 bus_hudson[2];
+extern u8 bus_hudson[6];
extern unsigned long sbdn_hudson;
unsigned long write_pirq_routing_table(unsigned long addr)
diff --git a/src/mainboard/amd/parmer/mptable.c b/src/mainboard/amd/parmer/mptable.c
index 67f73c4d83..d10669723b 100644
--- a/src/mainboard/amd/parmer/mptable.c
+++ b/src/mainboard/amd/parmer/mptable.c
@@ -30,7 +30,7 @@
//-#define IO_APIC_ID CONFIG_MAX_PHYSICAL_CPUS + 1
#define IO_APIC_ID CONFIG_MAX_CPUS
-extern u8 bus_hudson[3];
+extern u8 bus_hudson[6];
extern u32 bus_type[256];
extern u32 sbdn_hudson;
diff --git a/src/mainboard/amd/thatcher/get_bus_conf.c b/src/mainboard/amd/thatcher/get_bus_conf.c
index d1be8b6268..c92fea95ed 100644
--- a/src/mainboard/amd/thatcher/get_bus_conf.c
+++ b/src/mainboard/amd/thatcher/get_bus_conf.c
@@ -30,7 +30,7 @@
* and acpi_tables busnum is default.
*/
u8 bus_isa;
-u8 bus_hudson[3];
+u8 bus_hudson[6];
u32 apicid_hudson;
/*
@@ -97,9 +97,7 @@ void get_bus_conf(void)
sbdn_hudson = 0;
- for (i = 0; i < 3; i++) {
- bus_hudson[i] = 0;
- }
+ memset(bus_hudson, 0, sizeof(bus_hudson));
for (i = 0; i < 256; i++) {
bus_type[i] = 0; /* default ISA bus. */
diff --git a/src/mainboard/amd/thatcher/irq_tables.c b/src/mainboard/amd/thatcher/irq_tables.c
index d7e223bb93..d5339ad653 100644
--- a/src/mainboard/amd/thatcher/irq_tables.c
+++ b/src/mainboard/amd/thatcher/irq_tables.c
@@ -44,7 +44,7 @@ static void write_pirq_info(struct irq_info *pirq_info, u8 bus, u8 devfn,
}
extern u8 bus_isa;
-extern u8 bus_hudson[2];
+extern u8 bus_hudson[6];
extern unsigned long sbdn_hudson;
unsigned long write_pirq_routing_table(unsigned long addr)
diff --git a/src/mainboard/amd/thatcher/mptable.c b/src/mainboard/amd/thatcher/mptable.c
index 8253b2c9cf..10d2fea31a 100644
--- a/src/mainboard/amd/thatcher/mptable.c
+++ b/src/mainboard/amd/thatcher/mptable.c
@@ -30,7 +30,7 @@
//-#define IO_APIC_ID CONFIG_MAX_PHYSICAL_CPUS + 1
#define IO_APIC_ID CONFIG_MAX_CPUS
-extern u8 bus_hudson[3];
+extern u8 bus_hudson[6];
extern u32 bus_type[256];
extern u32 sbdn_hudson;
diff --git a/src/mainboard/asrock/imb-a180/get_bus_conf.c b/src/mainboard/asrock/imb-a180/get_bus_conf.c
index 0d379d5274..fb63ace4c5 100644
--- a/src/mainboard/asrock/imb-a180/get_bus_conf.c
+++ b/src/mainboard/asrock/imb-a180/get_bus_conf.c
@@ -30,7 +30,7 @@
* and acpi_tables busnum is default.
*/
u8 bus_isa;
-u8 bus_yangtze[3];
+u8 bus_yangtze[6];
u32 apicid_yangtze;
/*
@@ -100,9 +100,7 @@ void get_bus_conf(void)
sbdn_yangtze = 0;
- for (i = 0; i < 3; i++) {
- bus_yangtze[i] = 0;
- }
+ memset(bus_yangtze, 0, sizeof(bus_yangtze));
for (i = 0; i < 256; i++) {
bus_type[i] = 0; /* default ISA bus. */
diff --git a/src/mainboard/asrock/imb-a180/irq_tables.c b/src/mainboard/asrock/imb-a180/irq_tables.c
index 977915348b..9eb36496fd 100644
--- a/src/mainboard/asrock/imb-a180/irq_tables.c
+++ b/src/mainboard/asrock/imb-a180/irq_tables.c
@@ -44,7 +44,7 @@ static void write_pirq_info(struct irq_info *pirq_info, u8 bus, u8 devfn,
}
extern u8 bus_isa;
-extern u8 bus_yangtze[2];
+extern u8 bus_yangtze[6];
extern unsigned long sbdn_yangtze;
unsigned long write_pirq_routing_table(unsigned long addr)
diff --git a/src/mainboard/asrock/imb-a180/mptable.c b/src/mainboard/asrock/imb-a180/mptable.c
index 118f86088d..83c0b41108 100644
--- a/src/mainboard/asrock/imb-a180/mptable.c
+++ b/src/mainboard/asrock/imb-a180/mptable.c
@@ -30,7 +30,7 @@
//-#define IO_APIC_ID CONFIG_MAX_PHYSICAL_CPUS + 1
#define IO_APIC_ID CONFIG_MAX_CPUS
-extern u8 bus_yangtze[3];
+extern u8 bus_yangtze[6];
extern u32 bus_type[256];
extern u32 sbdn_yangtze;
diff --git a/src/mainboard/asus/f2a85-m/get_bus_conf.c b/src/mainboard/asus/f2a85-m/get_bus_conf.c
index d1be8b6268..c92fea95ed 100644
--- a/src/mainboard/asus/f2a85-m/get_bus_conf.c
+++ b/src/mainboard/asus/f2a85-m/get_bus_conf.c
@@ -30,7 +30,7 @@
* and acpi_tables busnum is default.
*/
u8 bus_isa;
-u8 bus_hudson[3];
+u8 bus_hudson[6];
u32 apicid_hudson;
/*
@@ -97,9 +97,7 @@ void get_bus_conf(void)
sbdn_hudson = 0;
- for (i = 0; i < 3; i++) {
- bus_hudson[i] = 0;
- }
+ memset(bus_hudson, 0, sizeof(bus_hudson));
for (i = 0; i < 256; i++) {
bus_type[i] = 0; /* default ISA bus. */
diff --git a/src/mainboard/asus/f2a85-m/irq_tables.c b/src/mainboard/asus/f2a85-m/irq_tables.c
index d7e223bb93..d5339ad653 100644
--- a/src/mainboard/asus/f2a85-m/irq_tables.c
+++ b/src/mainboard/asus/f2a85-m/irq_tables.c
@@ -44,7 +44,7 @@ static void write_pirq_info(struct irq_info *pirq_info, u8 bus, u8 devfn,
}
extern u8 bus_isa;
-extern u8 bus_hudson[2];
+extern u8 bus_hudson[6];
extern unsigned long sbdn_hudson;
unsigned long write_pirq_routing_table(unsigned long addr)
diff --git a/src/mainboard/asus/f2a85-m/mptable.c b/src/mainboard/asus/f2a85-m/mptable.c
index 1760303781..97df048138 100644
--- a/src/mainboard/asus/f2a85-m/mptable.c
+++ b/src/mainboard/asus/f2a85-m/mptable.c
@@ -31,7 +31,7 @@
//-#define IO_APIC_ID CONFIG_MAX_PHYSICAL_CPUS + 1
#define IO_APIC_ID CONFIG_MAX_CPUS
-extern u8 bus_hudson[3];
+extern u8 bus_hudson[6];
extern u32 bus_type[256];
extern u32 sbdn_hudson;