]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
futex: Fix (possible) missed wakeup
authorPeter Zijlstra <peterz@infradead.org>
Thu, 29 Nov 2018 13:44:49 +0000 (14:44 +0100)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Aug 2019 09:18:49 +0000 (11:18 +0200)
commit1408661c6348f85783c7e69450635fd10a2383e8
tree7b85973ece6db8efde0846f24c6fabe0a69b8e35
parent4120dd24ad591a455f74765f21c9bf3926b6277c
futex: Fix (possible) missed wakeup

BugLink: https://bugs.launchpad.net/bugs/1837813
[ Upstream commit b061c38bef43406df8e73c5be06cbfacad5ee6ad ]

We must not rely on wake_q_add() to delay the wakeup; in particular
commit:

  1d0dcb3ad9d3 ("futex: Implement lockless wakeups")

moved wake_q_add() before smp_store_release(&q->lock_ptr, NULL), which
could result in futex_wait() waking before observing ->lock_ptr ==
NULL and going back to sleep again.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: 1d0dcb3ad9d3 ("futex: Implement lockless wakeups")
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
kernel/futex.c