diff mbox series

[v2,2/4] soc: samsung: exynos-asv: handle reading revision register error

Message ID 20201207190517.262051-3-krzk@kernel.org
State New
Headers show
Series soc: samsung: exynos-chipid and asv improvements | expand

Commit Message

Krzysztof Kozlowski Dec. 7, 2020, 7:05 p.m. UTC
If regmap_read() fails, the product_id local variable will contain
random value from the stack.  Do not try to parse such value and fail
the ASV driver probe.

Fixes: 5ea428595cc5 ("soc: samsung: Add Exynos Adaptive Supply Voltage driver")
Cc: <stable@vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 drivers/soc/samsung/exynos-asv.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Pankaj Dubey Dec. 8, 2020, 6:14 a.m. UTC | #1
> -----Original Message-----

> From: Krzysztof Kozlowski <krzk@kernel.org>

> Sent: Tuesday, December 8, 2020 12:35 AM

> To: Krzysztof Kozlowski <krzk@kernel.org>; linux-arm-

> kernel@lists.infradead.org; linux-samsung-soc@vger.kernel.org; linux-

> kernel@vger.kernel.org

> Cc: Sylwester Nawrocki <snawrocki@kernel.org>; Marek Szyprowski

> <m.szyprowski@samsung.com>; Bartlomiej Zolnierkiewicz

> <b.zolnierkie@samsung.com>; Arnd Bergmann <arnd@arndb.de>; Chanwoo

> Choi <cw00.choi@samsung.com>; Alim Akhtar <alim.akhtar@samsung.com>;

> Pankaj Dubey <pankaj.dubey@samsung.com>; stable@vger.kernel.org

> Subject: [PATCH v2 2/4] soc: samsung: exynos-asv: handle reading revision

> register error

> 

> If regmap_read() fails, the product_id local variable will contain random

value
> from the stack.  Do not try to parse such value and fail the ASV driver

probe.
> 

> Fixes: 5ea428595cc5 ("soc: samsung: Add Exynos Adaptive Supply Voltage

> driver")

> Cc: <stable@vger.kernel.org>

> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>

> ---

>  drivers/soc/samsung/exynos-asv.c | 8 +++++++-

>  1 file changed, 7 insertions(+), 1 deletion(-)

> 

> diff --git a/drivers/soc/samsung/exynos-asv.c

> b/drivers/soc/samsung/exynos-asv.c

> index f653e3533f0f..5daeadc36382 100644

> --- a/drivers/soc/samsung/exynos-asv.c

> +++ b/drivers/soc/samsung/exynos-asv.c

> @@ -129,7 +129,13 @@ static int exynos_asv_probe(struct platform_device

> *pdev)

>  		return PTR_ERR(asv->chipid_regmap);

>  	}

> 

> -	regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PRO_ID,

> &product_id);

> +	ret = regmap_read(asv->chipid_regmap,

> EXYNOS_CHIPID_REG_PRO_ID,

> +			  &product_id);

> +	if (ret < 0) {

> +		dev_err(&pdev->dev, "Cannot read revision from

> ChipID: %d\n",

> +			ret);

> +		return -ENODEV;

> +	}

> 

>  	switch (product_id & EXYNOS_MASK) {

>  	case 0xE5422000:

> --

> 2.25.1


Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
diff mbox series

Patch

diff --git a/drivers/soc/samsung/exynos-asv.c b/drivers/soc/samsung/exynos-asv.c
index f653e3533f0f..5daeadc36382 100644
--- a/drivers/soc/samsung/exynos-asv.c
+++ b/drivers/soc/samsung/exynos-asv.c
@@ -129,7 +129,13 @@  static int exynos_asv_probe(struct platform_device *pdev)
 		return PTR_ERR(asv->chipid_regmap);
 	}
 
-	regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PRO_ID, &product_id);
+	ret = regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PRO_ID,
+			  &product_id);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "Cannot read revision from ChipID: %d\n",
+			ret);
+		return -ENODEV;
+	}
 
 	switch (product_id & EXYNOS_MASK) {
 	case 0xE5422000: