diff options
| author | Venkat Gopalakrishnan <venkatg@codeaurora.org> | 2017-01-26 17:18:47 -0800 |
|---|---|---|
| committer | Venkat Gopalakrishnan <venkatg@codeaurora.org> | 2017-01-26 17:22:21 -0800 |
| commit | 7b3433c69705a4da075aa0cefc1472e0c5880089 (patch) | |
| tree | 613d41901a875c7ecda6887dd1da54f9fbfdfb46 | |
| parent | 314869eb56763d34f91d5483b0d510267894fadd (diff) | |
scsi: ufs: validate input args to queuecommand
Make sure to validate the input args to queuecommand to avoid
NULL dereferences.
Change-Id: I803e1cc019a4c5569fed9ee08113e323daab75c8
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
| -rw-r--r-- | drivers/scsi/ufs/ufshcd.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index d4acc3c911f5..49d86f082750 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -2769,6 +2769,9 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) hba = shost_priv(host); + if (!cmd || !cmd->request || !hba) + return -EINVAL; + tag = cmd->request->tag; if (!ufshcd_valid_tag(hba, tag)) { dev_err(hba->dev, @@ -2854,13 +2857,12 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd) ufshcd_vops_pm_qos_req_start(hba, cmd->request); /* IO svc time latency histogram */ - if (hba != NULL && cmd->request != NULL) { - if (hba->latency_hist_enabled && - (cmd->request->cmd_type == REQ_TYPE_FS)) { - cmd->request->lat_hist_io_start = ktime_get(); - cmd->request->lat_hist_enabled = 1; - } else - cmd->request->lat_hist_enabled = 0; + if (hba->latency_hist_enabled && + (cmd->request->cmd_type == REQ_TYPE_FS)) { + cmd->request->lat_hist_io_start = ktime_get(); + cmd->request->lat_hist_enabled = 1; + } else { + cmd->request->lat_hist_enabled = 0; } WARN_ON(hba->clk_gating.state != CLKS_ON); |
