|
@@ -266,12 +266,12 @@ asmlinkage void do_unaligned_access(struct pt_regs *regs, unsigned long address)
|
|
siginfo_t info;
|
|
siginfo_t info;
|
|
|
|
|
|
if (user_mode(regs)) {
|
|
if (user_mode(regs)) {
|
|
- /* Send a SIGSEGV */
|
|
|
|
- info.si_signo = SIGSEGV;
|
|
|
|
|
|
+ /* Send a SIGBUS */
|
|
|
|
+ info.si_signo = SIGBUS;
|
|
info.si_errno = 0;
|
|
info.si_errno = 0;
|
|
- /* info.si_code has been set above */
|
|
|
|
- info.si_addr = (void *)address;
|
|
|
|
- force_sig_info(SIGSEGV, &info, current);
|
|
|
|
|
|
+ info.si_code = BUS_ADRALN;
|
|
|
|
+ info.si_addr = (void __user *)address;
|
|
|
|
+ force_sig_info(SIGBUS, &info, current);
|
|
} else {
|
|
} else {
|
|
printk("KERNEL: Unaligned Access 0x%.8lx\n", address);
|
|
printk("KERNEL: Unaligned Access 0x%.8lx\n", address);
|
|
show_registers(regs);
|
|
show_registers(regs);
|