Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-2.6-microblaze.git] / drivers / staging / rts5208 / rtsx.c
index 41d13be..91fcf85 100644 (file)
@@ -118,9 +118,9 @@ static int slave_configure(struct scsi_device *sdev)
 
 /* queue a command */
 /* This is always called with scsi_lock(host) held */
-static int queuecommand_lck(struct scsi_cmnd *srb,
-                           void (*done)(struct scsi_cmnd *))
+static int queuecommand_lck(struct scsi_cmnd *srb)
 {
+       void (*done)(struct scsi_cmnd *) = scsi_done;
        struct rtsx_dev *dev = host_to_rtsx(srb->device->host);
        struct rtsx_chip *chip = dev->chip;
 
@@ -140,7 +140,6 @@ static int queuecommand_lck(struct scsi_cmnd *srb,
        }
 
        /* enqueue the command and wake up the control thread */
-       srb->scsi_done = done;
        chip->srb = srb;
        complete(&dev->cmnd_ready);
 
@@ -423,7 +422,7 @@ static int rtsx_control_thread(void *__dev)
 
                /* indicate that the command is done */
                else if (chip->srb->result != DID_ABORT << 16) {
-                       chip->srb->scsi_done(chip->srb);
+                       scsi_done(chip->srb);
                } else {
 skip_for_abort:
                        dev_err(&dev->pci->dev, "scsi command aborted\n");
@@ -635,7 +634,7 @@ static void quiesce_and_remove_host(struct rtsx_dev *dev)
        if (chip->srb) {
                chip->srb->result = DID_NO_CONNECT << 16;
                scsi_lock(host);
-               chip->srb->scsi_done(dev->chip->srb);
+               scsi_done(dev->chip->srb);
                chip->srb = NULL;
                scsi_unlock(host);
        }