All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] futex: Clarify mark_wake_futex memory barrier usage
@ 2017-04-14 22:31 Darren Hart (VMware)
  2017-04-15 14:07 ` [tip:locking/core] " tip-bot for Darren Hart (VMware)
  0 siblings, 1 reply; 2+ messages in thread
From: Darren Hart (VMware) @ 2017-04-14 22:31 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: LKML, Ingo Molnar, Peter Zijlstra

Clarify the scenario described in mark_wake_futex requiring the
smp_store_release(). Update the comment to explicitly refer to the
plist_del now under __unqueue_futex() (previously plist_del was in the
same function as the comment).

Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
---
 kernel/futex.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/futex.c b/kernel/futex.c
index ede2f1e..357348a 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1380,10 +1380,11 @@ static void mark_wake_futex(struct wake_q_head *wake_q, struct futex_q *q)
 	wake_q_add(wake_q, p);
 	__unqueue_futex(q);
 	/*
-	 * The waiting task can free the futex_q as soon as
-	 * q->lock_ptr = NULL is written, without taking any locks. A
-	 * memory barrier is required here to prevent the following
-	 * store to lock_ptr from getting ahead of the plist_del.
+	 * The waiting task can free the futex_q as soon as q->lock_ptr = NULL
+	 * is written, without taking any locks. This is possible in the event
+	 * of a spurious wakeup, for example. A memory barrier is required here
+	 * to prevent the following store to lock_ptr from getting ahead of the
+	 * plist_del in __unqueue_futex().
 	 */
 	smp_store_release(&q->lock_ptr, NULL);
 }
-- 
2.9.3


-- 
Darren Hart
VMware Open Source Technology Center

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [tip:locking/core] futex: Clarify mark_wake_futex memory barrier usage
  2017-04-14 22:31 [PATCH] futex: Clarify mark_wake_futex memory barrier usage Darren Hart (VMware)
@ 2017-04-15 14:07 ` tip-bot for Darren Hart (VMware)
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Darren Hart (VMware) @ 2017-04-15 14:07 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: hpa, dvhart, mingo, linux-kernel, tglx, peterz

Commit-ID:  38fcd06e9b7f6855db1f3ebac5e18b8fdb467ffd
Gitweb:     http://git.kernel.org/tip/38fcd06e9b7f6855db1f3ebac5e18b8fdb467ffd
Author:     Darren Hart (VMware) <dvhart@infradead.org>
AuthorDate: Fri, 14 Apr 2017 15:31:38 -0700
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Sat, 15 Apr 2017 16:03:46 +0200

futex: Clarify mark_wake_futex memory barrier usage

Clarify the scenario described in mark_wake_futex requiring the
smp_store_release(). Update the comment to explicitly refer to the
plist_del now under __unqueue_futex() (previously plist_del was in the
same function as the comment).

Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20170414223138.GA4222@fury
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
 kernel/futex.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/futex.c b/kernel/futex.c
index ede2f1e..357348a 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1380,10 +1380,11 @@ static void mark_wake_futex(struct wake_q_head *wake_q, struct futex_q *q)
 	wake_q_add(wake_q, p);
 	__unqueue_futex(q);
 	/*
-	 * The waiting task can free the futex_q as soon as
-	 * q->lock_ptr = NULL is written, without taking any locks. A
-	 * memory barrier is required here to prevent the following
-	 * store to lock_ptr from getting ahead of the plist_del.
+	 * The waiting task can free the futex_q as soon as q->lock_ptr = NULL
+	 * is written, without taking any locks. This is possible in the event
+	 * of a spurious wakeup, for example. A memory barrier is required here
+	 * to prevent the following store to lock_ptr from getting ahead of the
+	 * plist_del in __unqueue_futex().
 	 */
 	smp_store_release(&q->lock_ptr, NULL);
 }

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-04-15 14:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-14 22:31 [PATCH] futex: Clarify mark_wake_futex memory barrier usage Darren Hart (VMware)
2017-04-15 14:07 ` [tip:locking/core] " tip-bot for Darren Hart (VMware)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.