diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-08-07 19:13:23 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-08-07 19:13:23 +0900 |
commit | 5556410e2203877e7606bb1008f2e024fe87953a (patch) | |
tree | acf8039b76534dccb73fa0def1747e6bbbf385bd /arch/sh/kernel | |
parent | 662ae2169a16004700cc18c1898aead2e5e944d5 (diff) | |
download | lwn-5556410e2203877e7606bb1008f2e024fe87953a.tar.gz lwn-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')
-rw-r--r-- | arch/sh/kernel/machvec.c | 7 |
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. */ |