diff options
author | John David Anglin <dave.anglin@bell.net> | 2022-01-04 21:34:26 +0000 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2022-01-07 01:29:21 +0100 |
commit | 9d90a90855ceb9ce0fb9b46b0591ac211e4b4612 (patch) | |
tree | 23d97fd86a48f1c7d7e0fc5290177c27ecaad603 /arch | |
parent | 4b9d2a731c3d22a05c1bccdb11b6e00054ff5fda (diff) | |
download | linux-stable-9d90a90855ceb9ce0fb9b46b0591ac211e4b4612.tar.gz linux-stable-9d90a90855ceb9ce0fb9b46b0591ac211e4b4612.tar.bz2 linux-stable-9d90a90855ceb9ce0fb9b46b0591ac211e4b4612.zip |
parisc: Don't call faulthandler_disabled() in do_page_fault()
It is dangerous to call faulthandler_disabled() when user_mode(regs)
is true. The task pagefault_disabled counter is racy and it is not
updated atomically on parisc. As a result, calling faulthandler_disabled()
may cause erroneous termination.
We now handle execption fixups and termination when user_mode(regs) is
false in handle_interruption(). Thus, we can just remove the
faulthandler_disabled() check from do_page_fault().
Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/parisc/mm/fault.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index 01fd2a32acc6..499e2e8f7f34 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c @@ -267,9 +267,6 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, vm_fault_t fault = 0; unsigned int flags; - if (faulthandler_disabled()) - goto no_context; - tsk = current; mm = tsk->mm; if (!mm) |