summaryrefslogtreecommitdiff
path: root/net/qrtr/qrtr.c
diff options
context:
space:
mode:
authorMilton Miller <miltonm@us.ibm.com>2021-03-29 10:20:39 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-04-14 08:42:08 +0200
commitdfe7805e6aa6f54f7b01c3f11c23af938ad9bd7b (patch)
tree529ac231c67974ca3fed581dff0cb51314c96b5c /net/qrtr/qrtr.c
parentae4a8d10ac8b059776bab82ac2540322adbf9843 (diff)
net/ncsi: Avoid channel_monitor hrtimer deadlock
[ Upstream commit 03cb4d05b4ea9a3491674ca40952adb708d549fa ] Calling ncsi_stop_channel_monitor from channel_monitor is a guaranteed deadlock on SMP because stop calls del_timer_sync on the timer that invoked channel_monitor as its timer function. Recognise the inherent race of marking the monitor disabled before deleting the timer by just returning if enable was cleared. After a timeout (the default case -- reset to START when response received) just mark the monitor.enabled false. If the channel has an entry on the channel_queue list, or if the state is not ACTIVE or INACTIVE, then warn and mark the timer stopped and don't restart, as the locking is broken somehow. Fixes: 0795fb2021f0 ("net/ncsi: Stop monitor if channel times out or is inactive") Signed-off-by: Milton Miller <miltonm@us.ibm.com> Signed-off-by: Eddie James <eajames@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net/qrtr/qrtr.c')
0 files changed, 0 insertions, 0 deletions