aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/machvec.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-08-07 19:13:23 +0900
committerPaul Mundt <lethal@linux-sh.org>2007-08-07 19:13:23 +0900
commit5556410e2203877e7606bb1008f2e024fe87953a (patch)
treeacf8039b76534dccb73fa0def1747e6bbbf385bd /arch/sh/kernel/machvec.c
parentsh: Fix PTRACE_PEEKTEXT/PEEKDATA fallout from generic_ptrace_peekdata(). (diff)
downloadlinux-dev-5556410e2203877e7606bb1008f2e024fe87953a.tar.xz
linux-dev-5556410e2203877e7606bb1008f2e024fe87953a.zip
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>
Diffstat (limited to 'arch/sh/kernel/machvec.c')
-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)
(unsigned long)&__machvec_start);
/*
+ * Sanity check for machvec section alignment. Ensure
+ * __initmv hasn't been misused.
+ */
+ if (machvec_size % sizeof(struct sh_machine_vector))
+ panic("machvec misaligned, invalid __initmv use?");
+
+ /*
* If the machvec hasn't been preselected, use the first
* vector (usually the only one) from .machvec.init.
*/