aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2005-05-01 11:58:53 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-01 11:58:53 -0400
commit92eac95287d75f220a8bbef6646f51a6497c4b4c (patch)
tree487b3501d9f212cd3f763ee9d8c457b0cda28d56 /include
parent31df7b7fc6182b6c4e5c3b77084d0c026b3ac613 (diff)
[PATCH] uml: fix oops related to exception table
Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Prevent the kernel from oopsing during the extable sorting, as it can do now, because the extable is in the readonly section of the binary. Jeff says: The exception table turned RO in 2.6.11-rc3-mm1 for some reason. Moving it causes it to land in the writable data section of the binary. Paolo says: This patch fixes a oops on startup, which can be easily triggered by compiling with CONFIG_MODE_TT disabled, and STATIC_LINK either disabled or enabled. The resulting kernel will always Oops on startup, after printing this simple output: I've verified, by binary search on the BitKeeper repository (synced up as of 2.6.12-rc2), starting from the range 2.6.11-2.6.12-rc1, that this bug shows up on BitKeeper revisions in the range [@1.1994.11.168,+inf), i.e. starting from this: [PATCH] lib/sort: Replace insertion sort in exception tables Since UML does not use the exception table, it's likely that insertion sort didn't happen to write anything on the table. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-um/common.lds.S9
1 files changed, 4 insertions, 5 deletions
diff --git a/include/asm-um/common.lds.S b/include/asm-um/common.lds.S
index a3d6aab0e74d..1010153faaf9 100644
--- a/include/asm-um/common.lds.S
+++ b/include/asm-um/common.lds.S
@@ -8,11 +8,6 @@
8 _sdata = .; 8 _sdata = .;
9 PROVIDE (sdata = .); 9 PROVIDE (sdata = .);
10 10
11 . = ALIGN(16); /* Exception table */
12 __start___ex_table = .;
13 __ex_table : { *(__ex_table) }
14 __stop___ex_table = .;
15
16 RODATA 11 RODATA
17 12
18 .unprotected : { *(.unprotected) } 13 .unprotected : { *(.unprotected) }
@@ -20,6 +15,10 @@
20 PROVIDE (_unprotected_end = .); 15 PROVIDE (_unprotected_end = .);
21 16
22 . = ALIGN(4096); 17 . = ALIGN(4096);
18 __start___ex_table = .;
19 __ex_table : { *(__ex_table) }
20 __stop___ex_table = .;
21
23 __uml_setup_start = .; 22 __uml_setup_start = .;
24 .uml.setup.init : { *(.uml.setup.init) } 23 .uml.setup.init : { *(.uml.setup.init) }
25 __uml_setup_end = .; 24 __uml_setup_end = .;