| From: David Hildenbrand <dahi@linux.vnet.ibm.com> |
| Date: Mon, 11 May 2015 17:52:17 +0200 |
| Subject: sched/preempt, futex: Update comments to clarify that preemption doesn't have to be disabled |
| |
| As arm64 and arc have no special implementations for !CONFIG_SMP, mutual |
| exclusion doesn't seem to rely on preemption. |
| |
| Let's make it clear in the comments that preemption doesn't have to be |
| disabled when accessing user space in the futex code, so we can remove |
| preempt_disable() from pagefault_disable(). |
| |
| [upstream commit 2f09b227eeed4b3a072fe818c82a4c773b778cde] |
| Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> |
| --- |
| arch/arc/include/asm/futex.h | 10 +++++----- |
| arch/arm64/include/asm/futex.h | 4 ++-- |
| 2 files changed, 7 insertions(+), 7 deletions(-) |
| |
| --- a/arch/arc/include/asm/futex.h |
| +++ b/arch/arc/include/asm/futex.h |
| @@ -53,7 +53,7 @@ static inline int futex_atomic_op_inuser |
| if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) |
| return -EFAULT; |
| |
| - pagefault_disable(); /* implies preempt_disable() */ |
| + pagefault_disable(); |
| |
| switch (op) { |
| case FUTEX_OP_SET: |
| @@ -75,7 +75,7 @@ static inline int futex_atomic_op_inuser |
| ret = -ENOSYS; |
| } |
| |
| - pagefault_enable(); /* subsumes preempt_enable() */ |
| + pagefault_enable(); |
| |
| if (!ret) { |
| switch (cmp) { |
| @@ -104,7 +104,7 @@ static inline int futex_atomic_op_inuser |
| return ret; |
| } |
| |
| -/* Compare-xchg with preemption disabled. |
| +/* Compare-xchg with pagefaults disabled. |
| * Notes: |
| * -Best-Effort: Exchg happens only if compare succeeds. |
| * If compare fails, returns; leaving retry/looping to upper layers |
| @@ -121,7 +121,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, |
| if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) |
| return -EFAULT; |
| |
| - pagefault_disable(); /* implies preempt_disable() */ |
| + pagefault_disable(); |
| |
| /* TBD : can use llock/scond */ |
| __asm__ __volatile__( |
| @@ -142,7 +142,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, |
| : "r"(oldval), "r"(newval), "r"(uaddr), "ir"(-EFAULT) |
| : "cc", "memory"); |
| |
| - pagefault_enable(); /* subsumes preempt_enable() */ |
| + pagefault_enable(); |
| |
| *uval = val; |
| return val; |
| --- a/arch/arm64/include/asm/futex.h |
| +++ b/arch/arm64/include/asm/futex.h |
| @@ -58,7 +58,7 @@ futex_atomic_op_inuser (int encoded_op, |
| if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) |
| return -EFAULT; |
| |
| - pagefault_disable(); /* implies preempt_disable() */ |
| + pagefault_disable(); |
| |
| switch (op) { |
| case FUTEX_OP_SET: |
| @@ -85,7 +85,7 @@ futex_atomic_op_inuser (int encoded_op, |
| ret = -ENOSYS; |
| } |
| |
| - pagefault_enable(); /* subsumes preempt_enable() */ |
| + pagefault_enable(); |
| |
| if (!ret) { |
| switch (cmp) { |