diff options
author | David S. Miller <davem@davemloft.net> | 2005-10-13 17:41:23 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-10-13 17:41:23 -0400 |
commit | c8923c6b852d3a97c1faad0566e38fca330375a7 (patch) | |
tree | eb79e97c5468bba641c7a34b83514876f4902cf2 /arch/sh/kernel | |
parent | c931488cc4619eecfe68a2f046b5898fddc2f904 (diff) |
[NETFILTER]: Fix OOPSes on machines with discontiguous cpu numbering.
Original patch by Harald Welte, with feedback from Herbert Xu
and testing by Sébastien Bernard.
EBTABLES, ARP tables, and IP/IP6 tables all assume that cpus
are numbered linearly. That is not necessarily true.
This patch fixes that up by calculating the largest possible
cpu number, and allocating enough per-cpu structure space given
that.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r-- | arch/sh/kernel/smp.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 56a39d69e080..5ecefc02896a 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/time.h> | 22 | #include <linux/time.h> |
23 | #include <linux/timex.h> | 23 | #include <linux/timex.h> |
24 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
25 | #include <linux/module.h> | ||
25 | 26 | ||
26 | #include <asm/atomic.h> | 27 | #include <asm/atomic.h> |
27 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
@@ -39,6 +40,8 @@ struct sh_cpuinfo cpu_data[NR_CPUS]; | |||
39 | extern void per_cpu_trap_init(void); | 40 | extern void per_cpu_trap_init(void); |
40 | 41 | ||
41 | cpumask_t cpu_possible_map; | 42 | cpumask_t cpu_possible_map; |
43 | EXPORT_SYMBOL(cpu_possible_map); | ||
44 | |||
42 | cpumask_t cpu_online_map; | 45 | cpumask_t cpu_online_map; |
43 | static atomic_t cpus_booted = ATOMIC_INIT(0); | 46 | static atomic_t cpus_booted = ATOMIC_INIT(0); |
44 | 47 | ||