summaryrefslogtreecommitdiffstats
path: root/kernel/futex.c
diff options
context:
space:
mode:
authorRoland Kammerer <roland.kammerer@linbit.com>2018-12-20 17:23:28 +0100
committerJens Axboe <axboe@kernel.dk>2018-12-20 09:51:29 -0700
commitd29e89e34952a9ad02c77109c71a80043544296e (patch)
tree76bf37e788e3374b433ce89a8664ad9a5d46dff1 /kernel/futex.c
parent3a762de55b4ede47a5369f57d0f92979738be638 (diff)
downloadlinux-d29e89e34952a9ad02c77109c71a80043544296e.tar.gz
linux-d29e89e34952a9ad02c77109c71a80043544296e.tar.bz2
linux-d29e89e34952a9ad02c77109c71a80043544296e.zip
drbd: narrow rcu_read_lock in drbd_sync_handshake
So far there was the possibility that we called genlmsg_new(GFP_NOIO)/mutex_lock() while holding an rcu_read_lock(). This included cases like: drbd_sync_handshake (acquire the RCU lock) drbd_asb_recover_1p drbd_khelper drbd_bcast_event genlmsg_new(GFP_NOIO) --> may sleep drbd_sync_handshake (acquire the RCU lock) drbd_asb_recover_1p drbd_khelper notify_helper genlmsg_new(GFP_NOIO) --> may sleep drbd_sync_handshake (acquire the RCU lock) drbd_asb_recover_1p drbd_khelper notify_helper mutex_lock --> may sleep While using GFP_ATOMIC whould have been possible in the first two cases, the real fix is to narrow the rcu_read_lock. Reported-by: Jia-Ju Bai <baijiaju1990@163.com> Reviewed-by: Lars Ellenberg <lars.ellenberg@linbit.com> Signed-off-by: Roland Kammerer <roland.kammerer@linbit.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'kernel/futex.c')
0 files changed, 0 insertions, 0 deletions