diff mbox series

scsi: ufs: fix error return code of ufshcd_populate_vreg()

Message ID 20210305084718.12108-1-baijiaju1990@gmail.com
State New
Headers show
Series scsi: ufs: fix error return code of ufshcd_populate_vreg() | expand

Commit Message

Jia-Ju Bai March 5, 2021, 8:47 a.m. UTC
When np is NULL or of_parse_phandle() returns NULL, no error return code
of ufshcd_populate_vreg() is assigned.
To fix this bug, ret is assigned with -EINVAL or -ENOENT as error return
code.

Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
---
 drivers/scsi/ufs/ufshcd-pltfrm.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Avri Altman March 7, 2021, 6:41 a.m. UTC | #1
> 

> When np is NULL or of_parse_phandle() returns NULL, no error return code

> of ufshcd_populate_vreg() is assigned.

> To fix this bug, ret is assigned with -EINVAL or -ENOENT as error return

> code.

This changes the flow of ufshcd_parse_regulator_info so you need to:
a) get a tested-by tag and indicate which platform & devices you used, and
b) explain further why ufshcd_parse_regulator_info doesn't no longer allow
     some of the regulators not to be set via DT, which is the current state.

Thanks,
Avri

> 

> Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>

> Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>

> ---

>  drivers/scsi/ufs/ufshcd-pltfrm.c | 2 ++

>  1 file changed, 2 insertions(+)

> 

> diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c

> index 1a69949a4ea1..9f11c416a919 100644

> --- a/drivers/scsi/ufs/ufshcd-pltfrm.c

> +++ b/drivers/scsi/ufs/ufshcd-pltfrm.c

> @@ -113,6 +113,7 @@ static int ufshcd_populate_vreg(struct device *dev,

> const char *name,

> 

>         if (!np) {

>                 dev_err(dev, "%s: non DT initialization\n", __func__);

> +               ret = -EINVAL;

>                 goto out;

>         }

> 

> @@ -120,6 +121,7 @@ static int ufshcd_populate_vreg(struct device *dev,

> const char *name,

>         if (!of_parse_phandle(np, prop_name, 0)) {

>                 dev_info(dev, "%s: Unable to find %s regulator, assuming enabled\n",

>                                 __func__, prop_name);

> +               ret = -ENOENT;

>                 goto out;

>         }

> 

> --

> 2.17.1
diff mbox series

Patch

diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c
index 1a69949a4ea1..9f11c416a919 100644
--- a/drivers/scsi/ufs/ufshcd-pltfrm.c
+++ b/drivers/scsi/ufs/ufshcd-pltfrm.c
@@ -113,6 +113,7 @@  static int ufshcd_populate_vreg(struct device *dev, const char *name,
 
 	if (!np) {
 		dev_err(dev, "%s: non DT initialization\n", __func__);
+		ret = -EINVAL;
 		goto out;
 	}
 
@@ -120,6 +121,7 @@  static int ufshcd_populate_vreg(struct device *dev, const char *name,
 	if (!of_parse_phandle(np, prop_name, 0)) {
 		dev_info(dev, "%s: Unable to find %s regulator, assuming enabled\n",
 				__func__, prop_name);
+		ret = -ENOENT;
 		goto out;
 	}