diff options
author | Peter Zijlstra <peterz@infradead.org> | 2017-09-22 17:48:06 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-09-25 16:37:11 +0200 |
commit | c74aef2d06a9f59cece89093eecc552933cba72a (patch) | |
tree | 2f67fc86ee37ac10e61a58199b8667eb1c97bbdc /kernel/locking/rwsem-xadd.c | |
parent | Linux 4.14-rc2 (diff) | |
download | linux-c74aef2d06a9f59cece89093eecc552933cba72a.tar.xz linux-c74aef2d06a9f59cece89093eecc552933cba72a.zip |
futex: Fix pi_state->owner serialization
There was a reported suspicion about a race between exit_pi_state_list()
and put_pi_state(). The same report mentioned the comment with
put_pi_state() said it should be called with hb->lock held, and it no
longer is in all places.
As it turns out, the pi_state->owner serialization is indeed broken. As per
the new rules:
734009e96d19 ("futex: Change locking rules")
pi_state->owner should be serialized by pi_state->pi_mutex.wait_lock.
For the sites setting pi_state->owner we already hold wait_lock (where
required) but exit_pi_state_list() and put_pi_state() were not and
raced on clearing it.
Fixes: 734009e96d19 ("futex: Change locking rules")
Reported-by: Gratian Crisan <gratian.crisan@ni.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: dvhart@infradead.org
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20170922154806.jd3ffltfk24m4o4y@hirez.programming.kicks-ass.net
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions