diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-03-18 12:52:21 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-03-18 21:03:38 +0100 |
commit | dcf23ac3e846ca0cf626c155a0e3fcbbcf4fae8a (patch) | |
tree | bcec3946a19e79751a97280bed14a633ad1a8ff8 /drivers/rtc/Kconfig | |
parent | mm: slub: be more careful about the double cmpxchg of freelist (diff) | |
download | linux-dcf23ac3e846ca0cf626c155a0e3fcbbcf4fae8a.tar.xz linux-dcf23ac3e846ca0cf626c155a0e3fcbbcf4fae8a.zip |
locks: reinstate locks_delete_block optimization
There is measurable performance impact in some synthetic tests due to
commit 6d390e4b5d48 (locks: fix a potential use-after-free problem when
wakeup a waiter). Fix the race condition instead by clearing the
fl_blocker pointer after the wake_up, using explicit acquire/release
semantics.
This does mean that we can no longer use the clearing of fl_blocker as
the wait condition, so switch the waiters over to checking whether the
fl_blocked_member list_head is empty.
Reviewed-by: yangerkun <yangerkun@huawei.com>
Reviewed-by: NeilBrown <neilb@suse.de>
Fixes: 6d390e4b5d48 (locks: fix a potential use-after-free problem when wakeup a waiter)
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions