sh: panic on machvec section misalignment.
authorPaul Mundt <lethal@linux-sh.org>
Tue, 7 Aug 2007 10:13:23 +0000 (19:13 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 7 Aug 2007 10:13:23 +0000 (19:13 +0900)
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>
arch/sh/kernel/machvec.c

index 23c5948..129b2cf 100644 (file)
@@ -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.
                 */