aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-08-07 06:13:23 -0400
committerPaul Mundt <lethal@linux-sh.org>2007-08-07 06:13:23 -0400
commit5556410e2203877e7606bb1008f2e024fe87953a (patch)
treeacf8039b76534dccb73fa0def1747e6bbbf385bd
parent662ae2169a16004700cc18c1898aead2e5e944d5 (diff)
sh: panic on machvec section misalignment.
Now that __initmv references the machvec section unconditionally there have been cases where folks have been mistakenly flagging non-machvec structures with the machvec section attribute (presumably to shut up modpost). This leads to obscure breakage in earlyprintk amongst other places and is rather non-obvious. Add a simple sanity check to try and catch __initmv misuse and panic early. Reported-by: Markus Brunner <super.firetwister@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r--arch/sh/kernel/machvec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c
index 23c5948f0124..129b2cfd18a8 100644
--- a/arch/sh/kernel/machvec.c
+++ b/arch/sh/kernel/machvec.c
@@ -91,6 +91,13 @@ void __init sh_mv_setup(void)
91 (unsigned long)&__machvec_start); 91 (unsigned long)&__machvec_start);
92 92
93 /* 93 /*
94 * Sanity check for machvec section alignment. Ensure
95 * __initmv hasn't been misused.
96 */
97 if (machvec_size % sizeof(struct sh_machine_vector))
98 panic("machvec misaligned, invalid __initmv use?");
99
100 /*
94 * If the machvec hasn't been preselected, use the first 101 * If the machvec hasn't been preselected, use the first
95 * vector (usually the only one) from .machvec.init. 102 * vector (usually the only one) from .machvec.init.
96 */ 103 */