summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2005-06-05 02:43:32 +0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-05 04:13:00 +0400
commit595bf2aacae96d0f87352a1ff5476b79e52e212f (patch)
tree049de411ab06dd7d32565c04231d0ff965eb8f9f
parentc5c3a6d8fe923b8780b9cd10e72344b8cf8518b5 (diff)
downloadlinux-595bf2aacae96d0f87352a1ff5476b79e52e212f.tar.xz
[PATCH] s390: in_interrupt vs. in_atomic
The condition for no context in do_exception checks for hard and soft interrupts by using in_interrupt() but not for preemption. This is bad for the users of __copy_from/to_user_inatomic because the fault handler might call schedule although the preemption count is != 0. Use in_atomic() instead in_interrupt(). Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/s390/mm/fault.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 80306bc8c799..75fde949d125 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -207,7 +207,7 @@ do_exception(struct pt_regs *regs, unsigned long error_code, int is_protection)
* we are not in an interrupt and that there is a
* user context.
*/
- if (user_address == 0 || in_interrupt() || !mm)
+ if (user_address == 0 || in_atomic() || !mm)
goto no_context;
/*