diff options
-rw-r--r-- | include/asm-parisc/futex.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/asm-parisc/futex.h b/include/asm-parisc/futex.h index dbee6e60aa81..fdc6d055ef7f 100644 --- a/include/asm-parisc/futex.h +++ b/include/asm-parisc/futex.h | |||
@@ -56,6 +56,12 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
56 | int err = 0; | 56 | int err = 0; |
57 | int uval; | 57 | int uval; |
58 | 58 | ||
59 | /* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is | ||
60 | * our gateway page, and causes no end of trouble... | ||
61 | */ | ||
62 | if (segment_eq(KERNEL_DS, get_fs()) && !uaddr) | ||
63 | return -EFAULT; | ||
64 | |||
59 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) | 65 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) |
60 | return -EFAULT; | 66 | return -EFAULT; |
61 | 67 | ||
@@ -67,5 +73,5 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
67 | return uval; | 73 | return uval; |
68 | } | 74 | } |
69 | 75 | ||
70 | #endif | 76 | #endif /*__KERNEL__*/ |
71 | #endif | 77 | #endif /*_ASM_PARISC_FUTEX_H*/ |