• Hannes Reinecke's avatar
    scsi: core: Only return started requests from scsi_host_find_tag() · e73a5e8e
    Hannes Reinecke authored
    scsi_host_find_tag() is used by the drivers to return a scsi command based
    on the command tag. Typically it's used from the interrupt handler to fetch
    the command associated with a value returned from hardware. Some drivers
    like fnic or qla4xxx, however, also use it also to traverse outstanding
    commands.  With the current implementation scsi_host_find_tag() will return
    commands even if they are not started (i.e. passed to the driver).  This
    will result in random errors with those drivers.  With this patch
    scsi_host_find_tag() will only return 'started' commands (i.e. commands
    which have been passed to the drivers) thus avoiding the above issue.  The
    other use cases will be unaffected as the interrupt handler naturally will
    only ever return 'started' requests.
    
    Link: https://lore.kernel.org/r/20200622063022.67891-1-hare@suse.deSigned-off-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    e73a5e8e
scsi_tcq.h 993 Bytes