diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-08-07 06:13:23 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-08-07 06:13:23 -0400 |
commit | 5556410e2203877e7606bb1008f2e024fe87953a (patch) | |
tree | acf8039b76534dccb73fa0def1747e6bbbf385bd | |
parent | 662ae2169a16004700cc18c1898aead2e5e944d5 (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.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) | |||
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 | */ |