Hannes Reinecke 3c891e37b7 scsi: scsi_dh_alua: Avoid crash during alua_bus_detach()
[ Upstream commit 5faf50e9e9fdc2117c61ff7e20da49cd6a29e0ca ]

alua_bus_detach() might be running concurrently with alua_rtpg_work(), so
we might trip over h->sdev == NULL and call BUG_ON().  The correct way of
handling it is to not set h->sdev to NULL in alua_bus_detach(), and call
rcu_synchronize() before the final delete to ensure that all concurrent
threads have left the critical section.  Then we can get rid of the
BUG_ON() and replace it with a simple if condition.

Link: https://lore.kernel.org/r/1600167537-12509-1-git-send-email-jitendra.khasdev@oracle.com
Link: https://lore.kernel.org/r/20200924104559.26753-1-hare@suse.de
Cc: Brian Bunker <brian@purestorage.com>
Acked-by: Brian Bunker <brian@purestorage.com>
Tested-by: Jitendra Khasdev <jitendra.khasdev@oracle.com>
Reviewed-by: Jitendra Khasdev <jitendra.khasdev@oracle.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-11-18 18:26:26 +01:00
..
2016-07-20 17:38:35 -06:00
2015-04-27 10:10:19 -07:00
2015-04-27 10:04:39 -07:00
2015-04-27 10:05:55 -07:00
2015-04-17 10:13:56 -07:00
2015-11-25 22:08:55 -05:00
2016-02-23 21:27:02 -05:00
2016-05-10 22:01:07 -04:00
2015-11-09 16:32:14 -08:00
2016-10-07 09:28:53 -07:00
2017-12-20 10:07:22 +01:00
2016-02-25 21:10:53 -05:00
2019-11-28 18:28:23 +01:00
2016-01-27 20:36:10 +08:00
2016-01-27 20:36:10 +08:00
2016-09-26 20:49:25 -04:00
2014-11-24 20:01:28 +01:00
2016-02-23 21:27:02 -05:00
2016-11-28 15:51:31 -05:00
2016-10-07 09:28:53 -07:00
2016-02-23 21:27:02 -05:00
2014-11-12 11:15:57 +01:00
2015-11-18 11:59:09 -05:00
2016-02-23 21:27:02 -05:00
2014-11-20 09:11:15 +01:00