|
@@ -748,13 +748,15 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
|
|
|
return;
|
|
|
}
|
|
|
#endif
|
|
|
+ /* Kernel addresses are always protection faults: */
|
|
|
+ if (address >= TASK_SIZE)
|
|
|
+ error_code |= PF_PROT;
|
|
|
|
|
|
- if (unlikely(show_unhandled_signals))
|
|
|
+ if (likely(show_unhandled_signals))
|
|
|
show_signal_msg(regs, error_code, address, tsk);
|
|
|
|
|
|
- /* Kernel addresses are always protection faults: */
|
|
|
tsk->thread.cr2 = address;
|
|
|
- tsk->thread.error_code = error_code | (address >= TASK_SIZE);
|
|
|
+ tsk->thread.error_code = error_code;
|
|
|
tsk->thread.trap_nr = X86_TRAP_PF;
|
|
|
|
|
|
force_sig_info_fault(SIGSEGV, si_code, address, tsk, 0);
|