lkml.org 
[lkml]   [2015]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:sched/core] sched/preempt, futex: Update comments to clarify that preemption doesn't have to be disabled
    Commit-ID:  2f09b227eeed4b3a072fe818c82a4c773b778cde
    Gitweb: http://git.kernel.org/tip/2f09b227eeed4b3a072fe818c82a4c773b778cde
    Author: David Hildenbrand <dahi@linux.vnet.ibm.com>
    AuthorDate: Mon, 11 May 2015 17:52:17 +0200
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Tue, 19 May 2015 08:39:17 +0200

    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().

    Reviewed-and-tested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: David.Laight@ACULAB.COM
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: airlied@linux.ie
    Cc: akpm@linux-foundation.org
    Cc: benh@kernel.crashing.org
    Cc: bigeasy@linutronix.de
    Cc: borntraeger@de.ibm.com
    Cc: daniel.vetter@intel.com
    Cc: heiko.carstens@de.ibm.com
    Cc: herbert@gondor.apana.org.au
    Cc: hocko@suse.cz
    Cc: hughd@google.com
    Cc: mst@redhat.com
    Cc: paulus@samba.org
    Cc: ralf@linux-mips.org
    Cc: schwidefsky@de.ibm.com
    Cc: yang.shi@windriver.com
    Link: http://lkml.kernel.org/r/1431359540-32227-13-git-send-email-dahi@linux.vnet.ibm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    arch/arc/include/asm/futex.h | 10 +++++-----
    arch/arm64/include/asm/futex.h | 4 ++--
    2 files changed, 7 insertions(+), 7 deletions(-)

    diff --git a/arch/arc/include/asm/futex.h b/arch/arc/include/asm/futex.h
    index 4dc64dd..05b5aaf 100644
    --- 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(int encoded_op, u32 __user *uaddr)
    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(int encoded_op, u32 __user *uaddr)
    ret = -ENOSYS;
    }

    - pagefault_enable(); /* subsumes preempt_enable() */
    + pagefault_enable();

    if (!ret) {
    switch (cmp) {
    @@ -104,7 +104,7 @@ static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
    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, u32 __user *uaddr, u32 oldval,
    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, u32 __user *uaddr, u32 oldval,
    : "r"(oldval), "r"(newval), "r"(uaddr), "ir"(-EFAULT)
    : "cc", "memory");

    - pagefault_enable(); /* subsumes preempt_enable() */
    + pagefault_enable();

    *uval = val;
    return val;
    diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h
    index 5f750dc..74069b3 100644
    --- 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, u32 __user *uaddr)
    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, u32 __user *uaddr)
    ret = -ENOSYS;
    }

    - pagefault_enable(); /* subsumes preempt_enable() */
    + pagefault_enable();

    if (!ret) {
    switch (cmp) {

    \
     
     \ /
      Last update: 2015-05-19 09:41    [W:4.098 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site