aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r--drivers/scsi/scsi_lib.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index d837dc180522..b9a8ddd77eef 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -645,16 +645,18 @@ static void scsi_mq_free_sgtables(struct scsi_cmnd *cmd)
645static void scsi_mq_uninit_cmd(struct scsi_cmnd *cmd) 645static void scsi_mq_uninit_cmd(struct scsi_cmnd *cmd)
646{ 646{
647 struct scsi_device *sdev = cmd->device; 647 struct scsi_device *sdev = cmd->device;
648 struct Scsi_Host *shost = sdev->host;
648 unsigned long flags; 649 unsigned long flags;
649 650
650 BUG_ON(list_empty(&cmd->list));
651
652 scsi_mq_free_sgtables(cmd); 651 scsi_mq_free_sgtables(cmd);
653 scsi_uninit_cmd(cmd); 652 scsi_uninit_cmd(cmd);
654 653
655 spin_lock_irqsave(&sdev->list_lock, flags); 654 if (shost->use_cmd_list) {
656 list_del_init(&cmd->list); 655 BUG_ON(list_empty(&cmd->list));
657 spin_unlock_irqrestore(&sdev->list_lock, flags); 656 spin_lock_irqsave(&sdev->list_lock, flags);
657 list_del_init(&cmd->list);
658 spin_unlock_irqrestore(&sdev->list_lock, flags);
659 }
658} 660}
659 661
660/* 662/*
@@ -1815,13 +1817,11 @@ static int scsi_mq_prep_fn(struct request *req)
1815 INIT_DELAYED_WORK(&cmd->abort_work, scmd_eh_abort_handler); 1817 INIT_DELAYED_WORK(&cmd->abort_work, scmd_eh_abort_handler);
1816 cmd->jiffies_at_alloc = jiffies; 1818 cmd->jiffies_at_alloc = jiffies;
1817 1819
1818 /* 1820 if (shost->use_cmd_list) {
1819 * XXX: cmd_list lookups are only used by two drivers, try to get 1821 spin_lock_irq(&sdev->list_lock);
1820 * rid of this list in common code. 1822 list_add_tail(&cmd->list, &sdev->cmd_list);
1821 */ 1823 spin_unlock_irq(&sdev->list_lock);
1822 spin_lock_irq(&sdev->list_lock); 1824 }
1823 list_add_tail(&cmd->list, &sdev->cmd_list);
1824 spin_unlock_irq(&sdev->list_lock);
1825 1825
1826 sg = (void *)cmd + sizeof(struct scsi_cmnd) + shost->hostt->cmd_size; 1826 sg = (void *)cmd + sizeof(struct scsi_cmnd) + shost->hostt->cmd_size;
1827 cmd->sdb.table.sgl = sg; 1827 cmd->sdb.table.sgl = sg;