mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 14:04:27 -04:00
s390/mm: Use handle_fault_error() in do_secure_storage_access()
Similar to the normal exception handler use handle_fault_error() which handles accesses from user space and kernel space differently. This also addresses failing kernel accesses via e.g. copy_from_user() to user space: instead of an endless loop, the fixup handling is performed. Even though this could only happen if arch_make_folio_accessible() would permanently fail, which is not realistic. Therefore this is rather a cleanup patch. Acked-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
committed by
Vasily Gorbik
parent
ecb00aa6fb
commit
da1f5a7dcf
@@ -427,10 +427,8 @@ void do_secure_storage_access(struct pt_regs *regs)
|
||||
* was not supposed to do, e.g. branching into secure
|
||||
* memory. Trigger a segmentation fault.
|
||||
*/
|
||||
if (user_mode(regs)) {
|
||||
send_sig(SIGSEGV, current, 0);
|
||||
return;
|
||||
}
|
||||
if (user_mode(regs))
|
||||
return handle_fault_error_nolock(regs, SEGV_ACCERR);
|
||||
/*
|
||||
* The kernel should never run into this case and
|
||||
* there is no way out of this situation.
|
||||
@@ -465,7 +463,7 @@ void do_secure_storage_access(struct pt_regs *regs)
|
||||
folio_put(folio);
|
||||
folio_walk_end(&fw, vma);
|
||||
if (rc)
|
||||
send_sig(SIGSEGV, current, 0);
|
||||
return handle_fault_error(regs, SEGV_ACCERR);
|
||||
mmap_read_unlock(mm);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user