lkml.org 
[lkml]   [2017]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH RFC tip/core/rcu 09/15] uprobes: Remove now-redundant smp_read_barrier_depends()
    Date
    Now that READ_ONCE() implies smp_read_barrier_depends(), the
    get_xol_area() and get_trampoline_vaddr() no longer need their
    smp_read_barrier_depends() calls, which this commit removes.
    While we are here, convert the corresponding smp_wmb() to an
    smp_store_release().

    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    ---
    kernel/events/uprobes.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
    index 267f6ef91d97..ce6848e46e94 100644
    --- a/kernel/events/uprobes.c
    +++ b/kernel/events/uprobes.c
    @@ -1167,8 +1167,8 @@ static int xol_add_vma(struct mm_struct *mm, struct xol_area *area)
    }

    ret = 0;
    - smp_wmb(); /* pairs with get_xol_area() */
    - mm->uprobes_state.xol_area = area;
    + /* pairs with get_xol_area() */
    + smp_store_release(&mm->uprobes_state.xol_area, area); /* ^^^ */
    fail:
    up_write(&mm->mmap_sem);

    @@ -1230,8 +1230,8 @@ static struct xol_area *get_xol_area(void)
    if (!mm->uprobes_state.xol_area)
    __create_xol_area(0);

    - area = mm->uprobes_state.xol_area;
    - smp_read_barrier_depends(); /* pairs with wmb in xol_add_vma() */
    + /* Pairs with xol_add_vma() smp_store_release() */
    + area = READ_ONCE(mm->uprobes_state.xol_area); /* ^^^ */
    return area;
    }

    @@ -1528,8 +1528,8 @@ static unsigned long get_trampoline_vaddr(void)
    struct xol_area *area;
    unsigned long trampoline_vaddr = -1;

    - area = current->mm->uprobes_state.xol_area;
    - smp_read_barrier_depends();
    + /* Pairs with xol_add_vma() smp_store_release() */
    + area = READ_ONCE(current->mm->uprobes_state.xol_area); /* ^^^ */
    if (area)
    trampoline_vaddr = area->vaddr;

    --
    2.5.2
    \
     
     \ /
      Last update: 2017-10-10 02:23    [W:3.902 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site