Commit 92eac952 authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds

[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: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 31df7b7f
...@@ -8,11 +8,6 @@ ...@@ -8,11 +8,6 @@
_sdata = .; _sdata = .;
PROVIDE (sdata = .); PROVIDE (sdata = .);
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
__ex_table : { *(__ex_table) }
__stop___ex_table = .;
RODATA RODATA
.unprotected : { *(.unprotected) } .unprotected : { *(.unprotected) }
...@@ -20,6 +15,10 @@ ...@@ -20,6 +15,10 @@
PROVIDE (_unprotected_end = .); PROVIDE (_unprotected_end = .);
. = ALIGN(4096); . = ALIGN(4096);
__start___ex_table = .;
__ex_table : { *(__ex_table) }
__stop___ex_table = .;
__uml_setup_start = .; __uml_setup_start = .;
.uml.setup.init : { *(.uml.setup.init) } .uml.setup.init : { *(.uml.setup.init) }
__uml_setup_end = .; __uml_setup_end = .;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment