uprobes: Remove now-redundant smp_read_barrier_depends()
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 9 Oct 2017 18:08:53 +0000 (11:08 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 4 Dec 2017 18:52:55 +0000 (10:52 -0800)
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

index 267f6ef..ce6848e 100644 (file)
@@ -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;