lkml.org 
[lkml]   [2014]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.11 154/208] mm: numa: guarantee that tlb_flush_pending updates are visible before page table updates
    Date
    3.11.10.3 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Mel Gorman <mgorman@suse.de>

    commit af2c1401e6f9177483be4fad876d0073669df9df upstream.

    According to documentation on barriers, stores issued before a LOCK can
    complete after the lock implying that it's possible tlb_flush_pending
    can be visible after a page table update. As per revised documentation,
    this patch adds a smp_mb__before_spinlock to guarantee the correct
    ordering.

    Signed-off-by: Mel Gorman <mgorman@suse.de>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Reviewed-by: Rik van Riel <riel@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    include/linux/mm_types.h | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
    index ef9dc52..e8d77fb 100644
    --- a/include/linux/mm_types.h
    +++ b/include/linux/mm_types.h
    @@ -477,7 +477,12 @@ static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
    static inline void set_tlb_flush_pending(struct mm_struct *mm)
    {
    mm->tlb_flush_pending = true;
    - barrier();
    +
    + /*
    + * Guarantee that the tlb_flush_pending store does not leak into the
    + * critical section updating the page tables
    + */
    + smp_mb__before_spinlock();
    }
    /* Clearing is done after a TLB flush, which also provides a barrier. */
    static inline void clear_tlb_flush_pending(struct mm_struct *mm)
    --
    1.8.3.2


    \
     
     \ /
      Last update: 2014-01-13 20:41    [W:4.126 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site