mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 14:43:16 +00:00
[SPARC64]: Loosen checks in exception table handling.
Some parts of the kernel now do things like do *_user() accesses while set_fs(KERNEL_DS) that fault on purpose. See, for example, the code added by changeset a0c1e9073ef7428a14309cba010633a6cd6719ea ("futex: runtime enable pi and robust functionality"). That trips up the ASI sanity checking we make in do_kernel_fault(). Just remove it for now. Maybe we can add it back later with an added conditional which looks at the current get_fs() value. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
896aef430e
commit
622eaec613
@ -244,16 +244,8 @@ static void do_kernel_fault(struct pt_regs *regs, int si_code, int fault_code,
|
||||
if (regs->tstate & TSTATE_PRIV) {
|
||||
const struct exception_table_entry *entry;
|
||||
|
||||
if (asi == ASI_P && (insn & 0xc0800000) == 0xc0800000) {
|
||||
if (insn & 0x2000)
|
||||
asi = (regs->tstate >> 24);
|
||||
else
|
||||
asi = (insn >> 5);
|
||||
}
|
||||
|
||||
/* Look in asi.h: All _S asis have LS bit set */
|
||||
if ((asi & 0x1) &&
|
||||
(entry = search_exception_tables(regs->tpc))) {
|
||||
entry = search_exception_tables(regs->tpc);
|
||||
if (entry) {
|
||||
regs->tpc = entry->fixup;
|
||||
regs->tnpc = regs->tpc + 4;
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user