mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
signal/arm64: For clarity separate the 3 signal sending cases in do_page_fault
It gets easy to confuse what is going on when some code is shared and some not so stop sharing the trivial bits of signal generation to make future updates easier to understand. Reviewed-by: Catalin Marinas <[email protected]> Tested-by: Catalin Marinas <[email protected]> Signed-off-by: "Eric W. Biederman" <[email protected]>
This commit is contained in:
1 parent
9ea3a9743c
commit
aefab2b4c0
1 file changed
+9
-4
@@ -567,16 +567,16 @@ retry:
|
||||
return 0;
|
||||
}
|
||||
|
||||
clear_siginfo(&si);
|
||||
si.si_addr = (void __user *)addr;
|
||||
|
||||
if (fault & VM_FAULT_SIGBUS) {
|
||||
/*
|
||||
* We had some memory, but were unable to successfully fix up
|
||||
* this page fault.
|
||||
*/
|
||||
clear_siginfo(&si);
|
||||
si.si_signo = SIGBUS;
|
||||
si.si_code = BUS_ADRERR;
|
||||
si.si_addr = (void __user *)addr;
|
||||
__do_user_fault(&si, esr);
|
||||
} else if (fault & (VM_FAULT_HWPOISON_LARGE | VM_FAULT_HWPOISON)) {
|
||||
unsigned int lsb;
|
||||
|
||||
@@ -584,20 +584,25 @@ retry:
|
||||
if (fault & VM_FAULT_HWPOISON_LARGE)
|
||||
lsb = hstate_index_to_shift(VM_FAULT_GET_HINDEX(fault));
|
||||
|
||||
clear_siginfo(&si);
|
||||
si.si_signo = SIGBUS;
|
||||
si.si_code = BUS_MCEERR_AR;
|
||||
si.si_addr = (void __user *)addr;
|
||||
si.si_addr_lsb = lsb;
|
||||
__do_user_fault(&si, esr);
|
||||
} else {
|
||||
/*
|
||||
* Something tried to access memory that isn't in our memory
|
||||
* map.
|
||||
*/
|
||||
clear_siginfo(&si);
|
||||
si.si_signo = SIGSEGV;
|
||||
si.si_code = fault == VM_FAULT_BADACCESS ?
|
||||
SEGV_ACCERR : SEGV_MAPERR;
|
||||
si.si_addr = (void __user *)addr;
|
||||
__do_user_fault(&si, esr);
|
||||
}
|
||||
|
||||
__do_user_fault(&si, esr);
|
||||
return 0;
|
||||
|
||||
no_context:
|
||||
|
||||
Reference in new issue
Block a user