diff options
author | Gustavo A. R. Silva <garsilva@embeddedor.com> | 2017-11-20 09:12:29 -0500 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2017-11-21 23:00:44 -0500 |
commit | 727535903bea924c4f73abb202c4b3e85fff0ca4 (patch) | |
tree | f68d4b8d2400105cf78abad963b894bf7e59eff5 | |
parent | e4717292ddebcfe231651b5aff9fa19ca158d178 (diff) |
scsi: ufs: ufshcd: fix potential NULL pointer dereference in ufshcd_config_vreg
_vreg_ is being dereferenced before it is null checked, hence there is a
potential null pointer dereference.
Fix this by moving the pointer dereference after _vreg_ has been null
checked.
This issue was detected with the help of Coccinelle.
Fixes: aa4976130934 ("ufs: Add regulator enable support")
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r-- | drivers/scsi/ufs/ufshcd.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 011c3369082c..a355d989b414 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c | |||
@@ -6559,12 +6559,15 @@ static int ufshcd_config_vreg(struct device *dev, | |||
6559 | struct ufs_vreg *vreg, bool on) | 6559 | struct ufs_vreg *vreg, bool on) |
6560 | { | 6560 | { |
6561 | int ret = 0; | 6561 | int ret = 0; |
6562 | struct regulator *reg = vreg->reg; | 6562 | struct regulator *reg; |
6563 | const char *name = vreg->name; | 6563 | const char *name; |
6564 | int min_uV, uA_load; | 6564 | int min_uV, uA_load; |
6565 | 6565 | ||
6566 | BUG_ON(!vreg); | 6566 | BUG_ON(!vreg); |
6567 | 6567 | ||
6568 | reg = vreg->reg; | ||
6569 | name = vreg->name; | ||
6570 | |||
6568 | if (regulator_count_voltages(reg) > 0) { | 6571 | if (regulator_count_voltages(reg) > 0) { |
6569 | min_uV = on ? vreg->min_uV : 0; | 6572 | min_uV = on ? vreg->min_uV : 0; |
6570 | ret = regulator_set_voltage(reg, min_uV, vreg->max_uV); | 6573 | ret = regulator_set_voltage(reg, min_uV, vreg->max_uV); |