OSDN Git Service

scsi: iscsi: Fix completion check during abort races
authorMike Christie <michael.christie@oracle.com>
Tue, 25 May 2021 18:18:08 +0000 (13:18 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Jun 2021 05:28:21 +0000 (01:28 -0400)
We have a ref to the task being aborted, so SCp.ptr will never be NULL. We
need to use iscsi_task_is_completed to check for the completed state.

Link: https://lore.kernel.org/r/20210525181821.7617-16-michael.christie@oracle.com
Reviewed-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libiscsi.c

index 94abb09..8222db4 100644 (file)
@@ -2338,7 +2338,7 @@ int iscsi_eh_abort(struct scsi_cmnd *sc)
                iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST);
                goto failed_unlocked;
        case TMF_NOT_FOUND:
-               if (!sc->SCp.ptr) {
+               if (iscsi_task_is_completed(task)) {
                        session->tmf_state = TMF_INITIAL;
                        memset(hdr, 0, sizeof(*hdr));
                        /* task completed before tmf abort response */