Uday Shankar 931c97a54c scsi: core: Restrict legal sdev_state transitions via sysfs
[ Upstream commit 2331ce6126be8864b39490e705286b66e2344aac ]

Userspace can currently write to sysfs to transition sdev_state to RUNNING
or OFFLINE from any source state. This causes issues because proper
transitioning out of some states involves steps besides just changing
sdev_state, so allowing userspace to change sdev_state regardless of the
source state can result in inconsistencies; e.g. with ISCSI we can end up
with sdev_state == SDEV_RUNNING while the device queue is quiesced. Any
task attempting I/O on the device will then hang, and in more recent
kernels, iscsid will hang as well.

More detail about this bug is provided in my first attempt:

https://groups.google.com/g/open-iscsi/c/PNKca4HgPDs/m/CXaDkntOAQAJ

Link: https://lore.kernel.org/r/20220924000241.2967323-1-ushankar@purestorage.com
Signed-off-by: Uday Shankar <ushankar@purestorage.com>
Suggested-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-11-10 18:15:34 +01:00
..
2021-07-11 10:59:53 -07:00
2021-07-11 10:59:53 -07:00
2021-09-07 19:13:42 -07:00
2020-03-11 23:07:59 -04:00
2022-04-08 14:23:33 +02:00
2022-04-13 20:59:05 +02:00
2021-01-22 21:14:08 -05:00
2021-01-22 21:14:07 -05:00
2021-01-22 21:14:08 -05:00
2020-03-11 23:07:59 -04:00
2021-05-31 22:48:21 -04:00
2020-09-02 22:49:06 -04:00
2021-05-31 22:48:21 -04:00
2021-04-13 00:20:48 -04:00
2020-12-07 20:24:09 -05:00
2022-02-16 12:56:14 +01:00
2020-12-07 20:24:09 -05:00
2021-05-31 22:48:23 -04:00
2021-05-21 16:59:33 -04:00
2021-03-24 23:03:43 -04:00
2020-10-14 15:15:35 -07:00
2022-01-27 11:05:03 +01:00
2020-02-24 15:01:57 -05:00
2021-08-23 12:54:30 -06:00
2021-04-13 00:20:48 -04:00
2021-08-16 13:33:24 -04:00