APPLIED: [SRU][Focal] scsi: fnic: Do not call 'scsi_done()' for unhandled commands

Kelsey Skunberg kelsey.skunberg at canonical.com
Tue Oct 12 22:58:08 UTC 2021


Applied to focal master-next. Thank you! 

-Kelsey

On 2021-09-27 10:17:27 , Eric Desrochers wrote:
> From: Hannes Reinecke <hare at suse.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1944586
> 
> The fnic drivers assigns an ioreq structure to each command and severs this
> assignment once scsi_done() has been called and the command has been
> completed.
> 
> When traversing commands to terminate outstanding I/O we should not call
> scsi_done() on commands which do not have a corresponding ioreq structure;
> these commands have either never entered the driver or have already been
> completed.
> 
> [mkp: fixed unused label warning]
> 
> Link: https://lore.kernel.org/r/20200515112647.49260-1-hare@suse.de
> Reported-by: kbuild test robot <lkp at intel.com>
> Reviewed-by: Laurence Oberman <loberman at redhat.com>
> Acked-by: Satish Kharat <satishkh at cisco.com>
> Acked-by: Karan Tilak Kumar <kartilak at cisco.com>
> Signed-off-by: Hannes Reinecke <hare at suse.com>
> Signed-off-by: Martin K. Petersen <martin.petersen at oracle.com>
> (cherry picked from commit 712582e60f288e7cede8d6fc8769529317e0f3e0)
> Signed-off-by: Eric Desrochers <eric.desrochers at canonical.com>
> ---
>  drivers/scsi/fnic/fnic_scsi.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c
> index b60795893994..1630fae6af1c 100644
> --- a/drivers/scsi/fnic/fnic_scsi.c
> +++ b/drivers/scsi/fnic/fnic_scsi.c
> @@ -1401,7 +1401,7 @@ static void fnic_cleanup_io(struct fnic *fnic, int exclude_id)
>  		}
>  		if (!io_req) {
>  			spin_unlock_irqrestore(io_lock, flags);
> -			goto cleanup_scsi_cmd;
> +			continue;
>  		}
>  
>  		CMD_SP(sc) = NULL;
> @@ -1416,7 +1416,6 @@ static void fnic_cleanup_io(struct fnic *fnic, int exclude_id)
>  		fnic_release_ioreq_buf(fnic, io_req, sc);
>  		mempool_free(io_req, fnic->io_req_pool);
>  
> -cleanup_scsi_cmd:
>  		sc->result = DID_TRANSPORT_DISRUPTED << 16;
>  		FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host,
>  			      "%s: tag:0x%x : sc:0x%p duration = %lu DID_TRANSPORT_DISRUPTED\n",
> -- 
> 2.25.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team



More information about the kernel-team mailing list