In ata_scsi_requeue_deferred_qc(), use ata_qc_done() instead of calling
ata_qc_free() and scsi_done() directly.
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
void ata_scsi_requeue_deferred_qc(struct ata_port *ap)
{
struct ata_queued_cmd *qc = ap->deferred_qc;
- struct scsi_cmnd *scmd;
lockdep_assert_held(ap->lock);
if (!qc)
return;
- scmd = qc->scsicmd;
ap->deferred_qc = NULL;
- ata_qc_free(qc);
- scmd->result = (DID_SOFT_ERROR << 16);
- scsi_done(scmd);
+ qc->scsicmd->result = (DID_SOFT_ERROR << 16);
+ ata_qc_done(qc);
}
static void ata_scsi_schedule_deferred_qc(struct ata_port *ap)