[IA64] honor notify_die() returning NOTIFY_STOP
This requires making die() and die_if_kernel() return a value, and their callers to honor this (and be prepared that it returns). Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
@ -23,7 +23,7 @@
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
extern void die_if_kernel(char *str, struct pt_regs *regs, long err);
|
||||
extern int die_if_kernel(char *str, struct pt_regs *regs, long err);
|
||||
|
||||
#undef DEBUG_UNALIGNED_TRAP
|
||||
|
||||
@ -675,8 +675,9 @@ emulate_load_updates (update_t type, load_store_t ld, struct pt_regs *regs, unsi
|
||||
*/
|
||||
if (ld.x6_op == 1 || ld.x6_op == 3) {
|
||||
printk(KERN_ERR "%s: register update on speculative load, error\n", __FUNCTION__);
|
||||
die_if_kernel("unaligned reference on speculative load with register update\n",
|
||||
regs, 30);
|
||||
if (die_if_kernel("unaligned reference on speculative load with register update\n",
|
||||
regs, 30))
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -1317,7 +1318,8 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
|
||||
|
||||
if (ia64_psr(regs)->be) {
|
||||
/* we don't support big-endian accesses */
|
||||
die_if_kernel("big-endian unaligned accesses are not supported", regs, 0);
|
||||
if (die_if_kernel("big-endian unaligned accesses are not supported", regs, 0))
|
||||
return;
|
||||
goto force_sigbus;
|
||||
}
|
||||
|
||||
@ -1534,7 +1536,8 @@ ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)
|
||||
ia64_handle_exception(regs, eh);
|
||||
goto done;
|
||||
}
|
||||
die_if_kernel("error during unaligned kernel access\n", regs, ret);
|
||||
if (die_if_kernel("error during unaligned kernel access\n", regs, ret))
|
||||
return;
|
||||
/* NOT_REACHED */
|
||||
}
|
||||
force_sigbus:
|
||||
|
Reference in New Issue
Block a user