[PATCH] PPC32: Fix alignment problem with __ex_table and __bug_table.

From: Paul Mackerras
Date: Sun Nov 09 2003 - 23:06:52 EST


Linus, please apply.

The __start___ex_table and __start___bug_table symbols could end up
pointing a few bytes before the actual __ex_table and __bug_table
sections, if the preceding section had an odd length. This led to
oopses in some situations. Patch from Sam Ravnborg.

diff -urN linux-2.5/arch/ppc/kernel/vmlinux.lds.S for-linus-ppc/arch/ppc/kernel/vmlinux.lds.S
--- linux-2.5/arch/ppc/kernel/vmlinux.lds.S 2003-09-24 10:55:53.000000000 +1000
+++ for-linus-ppc/arch/ppc/kernel/vmlinux.lds.S 2003-10-14 19:49:25.000000000 +1000
@@ -47,13 +47,17 @@

.fixup : { *(.fixup) }

- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- __start___bug_table = .;
- __bug_table : { *(__bug_table) }
- __stop___bug_table = .;
+ __ex_table : {
+ __start___ex_table = .;
+ *(__ex_table)
+ __stop___ex_table = .;
+ }
+
+ __bug_table : {
+ __start___bug_table = .;
+ *(__bug_table)
+ __stop___bug_table = .;
+ }

/* Read-write section, merged into data segment: */
. = ALIGN(4096);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/