locking/rwsem: Disable preemption for spinning region
authorYanfei Xu <yanfei.xu@windriver.com>
Wed, 13 Oct 2021 13:41:53 +0000 (21:41 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:16 +0000 (19:16 +0100)
commit562d350a88097ab7c314dbf90b7bfc07704284f2
tree5d4e15e049fa20cd41944b1337360fc21c78ca81
parente5d5e53171506141ff598187ea0c26b4122a4a4d
locking/rwsem: Disable preemption for spinning region

[ Upstream commit 7cdacc5f52d68a9370f182c844b5b3e6cc975cc1 ]

The spinning region rwsem_spin_on_owner() should not be preempted,
however the rwsem_down_write_slowpath() invokes it and don't disable
preemption. Fix it by adding a pair of preempt_disable/enable().

Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
[peterz: Fix CONFIG_RWSEM_SPIN_ON_OWNER=n build]
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Waiman Long <longman@redhat.com>
Link: https://lore.kernel.org/r/20211013134154.1085649-3-yanfei.xu@windriver.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/locking/rwsem.c