aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/fork.c')
-rw-r--r--kernel/fork.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c
index 5c372c954f3b..c7c112391d79 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -606,6 +606,11 @@ static void __mmdrop(struct mm_struct *mm)
606 606
607void mmdrop(struct mm_struct *mm) 607void mmdrop(struct mm_struct *mm)
608{ 608{
609 /*
610 * The implicit full barrier implied by atomic_dec_and_test() is
611 * required by the membarrier system call before returning to
612 * user-space, after storing to rq->curr.
613 */
609 if (unlikely(atomic_dec_and_test(&mm->mm_count))) 614 if (unlikely(atomic_dec_and_test(&mm->mm_count)))
610 __mmdrop(mm); 615 __mmdrop(mm);
611} 616}