diff options
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/rts5208/rtsx.c | 9 | ||||
-rw-r--r-- | drivers/staging/unisys/visorhba/visorhba_main.c | 20 |
2 files changed, 12 insertions, 17 deletions
diff --git a/drivers/staging/rts5208/rtsx.c b/drivers/staging/rts5208/rtsx.c index 41d13becec5c..91fcf85e150a 100644 --- a/drivers/staging/rts5208/rtsx.c +++ b/drivers/staging/rts5208/rtsx.c @@ -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); } diff --git a/drivers/staging/unisys/visorhba/visorhba_main.c b/drivers/staging/unisys/visorhba/visorhba_main.c index 41f8a72a2a95..694644112447 100644 --- a/drivers/staging/unisys/visorhba/visorhba_main.c +++ b/drivers/staging/unisys/visorhba/visorhba_main.c @@ -327,7 +327,7 @@ static int visorhba_abort_handler(struct scsi_cmnd *scsicmd) rtn = forward_taskmgmt_command(TASK_MGMT_ABORT_TASK, scsidev); if (rtn == SUCCESS) { scsicmd->result = DID_ABORT << 16; - scsicmd->scsi_done(scsicmd); + scsi_done(scsicmd); } return rtn; } @@ -354,7 +354,7 @@ static int visorhba_device_reset_handler(struct scsi_cmnd *scsicmd) rtn = forward_taskmgmt_command(TASK_MGMT_LUN_RESET, scsidev); if (rtn == SUCCESS) { scsicmd->result = DID_RESET << 16; - scsicmd->scsi_done(scsicmd); + scsi_done(scsicmd); } return rtn; } @@ -383,7 +383,7 @@ static int visorhba_bus_reset_handler(struct scsi_cmnd *scsicmd) rtn = forward_taskmgmt_command(TASK_MGMT_BUS_RESET, scsidev); if (rtn == SUCCESS) { scsicmd->result = DID_RESET << 16; - scsicmd->scsi_done(scsicmd); + scsi_done(scsicmd); } return rtn; } @@ -446,10 +446,9 @@ static u32 dma_data_dir_linux_to_spar(enum dma_data_direction d) * Return: 0 if successfully queued to the Service Partition, otherwise * error code */ -static int visorhba_queue_command_lck(struct scsi_cmnd *scsicmd, - void (*visorhba_cmnd_done) - (struct scsi_cmnd *)) +static int visorhba_queue_command_lck(struct scsi_cmnd *scsicmd) { + void (*visorhba_cmnd_done)(struct scsi_cmnd *) = scsi_done; struct uiscmdrsp *cmdrsp; struct scsi_device *scsidev = scsicmd->device; int insert_location; @@ -476,8 +475,7 @@ static int visorhba_queue_command_lck(struct scsi_cmnd *scsicmd, */ cmdrsp->scsi.handle = insert_location; - /* save done function that we have call when cmd is complete */ - scsicmd->scsi_done = visorhba_cmnd_done; + WARN_ON_ONCE(visorhba_cmnd_done != scsi_done); /* save destination */ cmdrsp->scsi.vdest.channel = scsidev->channel; cmdrsp->scsi.vdest.id = scsidev->id; @@ -584,7 +582,6 @@ static struct scsi_host_template visorhba_driver_template = { .eh_device_reset_handler = visorhba_device_reset_handler, .eh_bus_reset_handler = visorhba_bus_reset_handler, .eh_host_reset_handler = visorhba_host_reset_handler, - .shost_attrs = NULL, #define visorhba_MAX_CMNDS 128 .can_queue = visorhba_MAX_CMNDS, .sg_tablesize = 64, @@ -686,8 +683,7 @@ static void visorhba_serverdown_complete(struct visorhba_devdata *devdata) case CMD_SCSI_TYPE: scsicmd = pendingdel->sent; scsicmd->result = DID_RESET << 16; - if (scsicmd->scsi_done) - scsicmd->scsi_done(scsicmd); + scsi_done(scsicmd); break; case CMD_SCSITASKMGMT_TYPE: cmdrsp = pendingdel->sent; @@ -853,7 +849,7 @@ static void complete_scsi_command(struct uiscmdrsp *cmdrsp, else do_scsi_nolinuxstat(cmdrsp, scsicmd); - scsicmd->scsi_done(scsicmd); + scsi_done(scsicmd); } /* |