linux/net/ncsi
Milton Miller 03cb4d05b4 net/ncsi: Avoid channel_monitor hrtimer deadlock
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: 0795fb2021 ("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>
2021-03-30 13:16:23 -07:00
..
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
internal.h net/ncsi: Support for multi host mellanox card 2020-01-09 18:36:22 -08:00
ncsi-aen.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ncsi-cmd.c net/ncsi: Send device address as source address 2020-01-08 13:09:18 -08:00
ncsi-manage.c net/ncsi: Avoid channel_monitor hrtimer deadlock 2021-03-30 13:16:23 -07:00
ncsi-netlink.c net/ncsi: Fix netlink registration 2020-11-12 17:00:13 -08:00
ncsi-netlink.h net/ncsi: Fix netlink registration 2020-11-12 17:00:13 -08:00
ncsi-pkt.h net/ncsi: add response handlers for PLDM over NC-SI 2019-08-31 23:54:03 -07:00
ncsi-rsp.c net/ncsi: Use real net-device for response handler 2020-12-23 12:22:23 -08:00