Conditional statements are faster than indirect calls. Hence call scsi_done() directly. Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> --- drivers/scsi/scsi_debug.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 66f507469a31..407f1ce15118 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -4809,7 +4809,7 @@ static void sdebug_q_cmd_complete(struct sdebug_defer *sd_dp) pr_info("bypassing scsi_done() due to aborted cmd\n"); return; } - scp->scsi_done(scp); /* callback to mid level */ + scsi_done(scp); /* callback to mid level */ } /* When high resolution timer goes off this function is called. */ @@ -5524,7 +5524,7 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip, if (new_sd_dp) kfree(sd_dp); /* call scsi_done() from this thread */ - cmnd->scsi_done(cmnd); + scsi_done(cmnd); return 0; } /* otherwise reduce kt by elapsed time */ @@ -5604,7 +5604,7 @@ static int schedule_resp(struct scsi_cmnd *cmnd, struct sdebug_dev_info *devip, cmnd->result &= ~SDEG_RES_IMMED_MASK; if (cmnd->result == 0 && scsi_result != 0) cmnd->result = scsi_result; - cmnd->scsi_done(cmnd); + scsi_done(cmnd); return 0; } @@ -7363,7 +7363,7 @@ static int sdebug_blk_mq_poll(struct Scsi_Host *shost, unsigned int queue_num) } sd_dp->defer_t = SDEB_DEFER_NONE; spin_unlock_irqrestore(&sqp->qc_lock, iflags); - scp->scsi_done(scp); /* callback to mid level */ + scsi_done(scp); /* callback to mid level */ spin_lock_irqsave(&sqp->qc_lock, iflags); num_entries++; }