aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/mm_types.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index e5c49c30460f..ad0616f2fe2c 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -482,7 +482,12 @@ static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
482static inline void set_tlb_flush_pending(struct mm_struct *mm) 482static inline void set_tlb_flush_pending(struct mm_struct *mm)
483{ 483{
484 mm->tlb_flush_pending = true; 484 mm->tlb_flush_pending = true;
485 barrier(); 485
486 /*
487 * Guarantee that the tlb_flush_pending store does not leak into the
488 * critical section updating the page tables
489 */
490 smp_mb__before_spinlock();
486} 491}
487/* Clearing is done after a TLB flush, which also provides a barrier. */ 492/* Clearing is done after a TLB flush, which also provides a barrier. */
488static inline void clear_tlb_flush_pending(struct mm_struct *mm) 493static inline void clear_tlb_flush_pending(struct mm_struct *mm)