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 b9d857fe2a5c..be8aa5b98666 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}