Bart Van Assche
978b7922d3
scsi: core: Fix a race between scsi_done() and scsi_timeout()
...
If there is a race between scsi_done() and scsi_timeout() and if
scsi_timeout() loses the race, scsi_timeout() should not reset the request
timer. Hence change the return value for this case from BLK_EH_RESET_TIMER
into BLK_EH_DONE.
Although the block layer holds a reference on a request (req->ref) while
calling a timeout handler, restarting the timer (blk_add_timer()) while a
request is being completed is racy.
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Cc: Keith Busch <kbusch@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Hannes Reinecke <hare@suse.de>
Reported-by: Adrian Hunter <adrian.hunter@intel.com>
Fixes: 15f73f5b3e59 ("blk-mq: move failure injection out of blk_mq_complete_request")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221018202958.1902564-2-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2022-10-22 03:25:59 +00:00
..
2022-08-04 19:47:37 -07:00
2022-09-15 22:01:24 -04:00
2022-06-10 13:08:06 -04:00
2021-10-16 21:45:54 -04:00
2022-02-22 21:11:03 -05:00
2022-06-21 21:19:23 -04:00
2022-04-25 23:38:38 -04:00
2022-05-16 21:26:50 -04:00
2022-06-21 21:14:54 -04:00
2022-09-15 22:35:21 -04:00
2022-10-11 17:42:58 -06:00
2022-09-06 22:05:59 -04:00
2022-07-14 12:14:32 -06:00
2022-05-19 20:16:27 -04:00
2022-10-18 03:17:09 +00:00
2022-10-11 17:42:55 -06:00
2022-08-04 19:47:37 -07:00
2022-10-22 03:02:51 +00:00
2022-06-16 21:42:04 -04:00
2022-09-15 22:30:26 -04:00
2022-05-23 23:24:10 -04:00
2022-05-16 21:26:50 -04:00
2022-10-18 03:28:10 +00:00
2022-10-22 03:19:15 +00:00
2022-10-07 12:33:18 -07:00
2022-10-07 12:33:18 -07:00
2022-10-07 12:33:18 -07:00
2022-10-22 03:02:52 +00:00
2022-04-06 22:11:52 -04:00
2022-10-22 03:06:34 +00:00
2022-10-22 03:09:45 +00:00
2022-10-11 17:42:55 -06:00
2022-10-07 12:33:18 -07:00
2022-04-25 23:33:36 -04:00
2022-08-22 10:07:53 -06:00
2022-08-04 19:47:37 -07:00
2022-06-21 21:41:19 -04:00
2022-09-06 22:22:24 -04:00
2022-01-24 23:30:28 -05:00
2022-09-25 13:06:00 -04:00
2022-09-25 13:06:00 -04:00
2022-02-22 21:11:03 -05:00
2021-11-29 23:02:13 -05:00
2022-07-07 17:01:22 -04:00
2022-07-07 17:01:22 -04:00
2022-02-22 21:11:03 -05:00
2022-03-29 23:42:18 -04:00
2022-04-25 23:25:11 -04:00
2022-02-22 21:11:02 -05:00
2022-02-22 21:11:03 -05:00
2021-11-29 23:02:13 -05:00
2022-06-27 22:52:05 -04:00
2022-07-26 22:13:29 -04:00
2022-04-26 08:51:56 -04:00
2022-02-22 21:11:03 -05:00
2022-02-22 21:11:04 -05:00
2022-02-22 21:11:04 -05:00
2022-02-22 21:11:04 -05:00
2022-08-01 19:52:03 -04:00
2022-02-22 21:11:03 -05:00
2022-07-13 23:18:26 -04:00
2022-10-18 03:17:09 +00:00
2022-09-01 00:45:12 -04:00
2022-09-25 13:02:23 -04:00
2022-09-25 13:04:17 -04:00
2022-02-22 21:11:04 -05:00
2022-02-22 21:11:04 -05:00
2022-08-31 23:39:57 -04:00
2022-02-22 21:11:05 -05:00
2022-06-07 22:05:14 -04:00
2022-02-22 21:11:02 -05:00
2022-09-25 14:27:47 -04:00
2022-09-25 14:27:47 -04:00
2022-09-25 12:46:59 -04:00
2021-08-30 10:18:25 +02:00
2022-06-21 21:19:23 -04:00
2022-06-21 21:19:23 -04:00
2022-04-25 23:23:05 -04:00
2022-02-27 21:35:30 -05:00
2022-02-22 21:11:03 -05:00
2022-06-27 22:56:21 -04:00
2022-04-26 09:02:44 -04:00
2022-02-22 21:11:05 -05:00
2022-06-26 10:29:44 +10:00
2022-02-27 21:34:02 -05:00
2022-02-22 21:11:07 -05:00
2022-02-22 21:11:06 -05:00
2022-02-22 21:11:06 -05:00
2022-05-23 23:24:10 -04:00
2022-01-25 00:09:41 -05:00
2022-02-22 21:11:07 -05:00
2022-02-22 21:11:07 -05:00
2022-02-22 21:11:03 -05:00
2022-02-22 21:11:03 -05:00
2022-02-22 21:11:06 -05:00
2022-02-22 21:11:06 -05:00
2022-06-07 22:05:14 -04:00
2022-03-29 23:32:26 -04:00
2022-02-22 21:11:06 -05:00
2021-10-16 21:32:16 -04:00
2022-05-19 20:26:21 -04:00
2022-02-22 21:11:06 -05:00
2022-02-22 21:11:02 -05:00
2022-02-22 21:11:02 -05:00
2022-09-06 22:14:14 -04:00
2022-03-15 14:05:02 -04:00
2021-07-28 22:24:27 -04:00
2022-08-22 10:07:53 -06:00
2022-03-01 22:21:50 -05:00
2021-07-21 23:49:02 -04:00
2022-10-22 03:25:59 +00:00
2022-09-30 07:51:13 -06:00
2022-10-18 03:17:09 +00:00
2022-03-29 23:29:19 -04:00
2021-12-22 23:38:29 -05:00
2022-10-18 03:17:09 +00:00
2022-10-18 03:17:09 +00:00
2022-09-01 01:02:10 -04:00
2022-10-18 03:20:31 +00:00
2022-09-25 12:52:48 -04:00
2022-07-07 17:20:43 -04:00
2022-07-19 11:11:49 +02:00
2022-09-07 21:53:48 +02:00
2022-10-18 03:20:31 +00:00
2022-05-08 14:28:18 -04:00
2022-05-02 16:59:11 -04:00
2022-07-14 12:14:30 -06:00
2022-08-22 22:45:25 -04:00
2022-08-22 22:45:25 -04:00
2021-09-28 22:42:06 -04:00
2022-09-30 07:51:13 -06:00
2022-02-22 21:11:07 -05:00
2022-04-18 22:48:31 -04:00
2021-12-22 23:41:13 -05:00
2022-06-28 06:30:26 -06:00
2022-03-08 19:40:01 -07:00
2022-10-07 12:33:18 -07:00
2022-03-08 19:40:00 -07:00
2022-09-25 14:15:03 -04:00
2022-10-10 13:59:01 -07:00
2022-02-22 21:11:03 -05:00
2022-10-07 12:33:18 -07:00
2022-04-06 23:01:54 -04:00
2022-06-07 21:30:56 -04:00
2022-09-25 13:29:53 -04:00
2022-09-25 13:29:53 -04:00
2022-03-01 23:56:28 -05:00
2022-02-22 21:11:07 -05:00
2022-09-06 22:05:58 -04:00
2022-02-22 21:11:07 -05:00
2022-03-30 00:05:42 -04:00