media: omap3isp: add checks for devm_regulator_get

Message ID 20191210091428.23448-1-hslester96@gmail.com (mailing list archive)
State New
Delegated to: Laurent Pinchart
Headers
Series media: omap3isp: add checks for devm_regulator_get |

Commit Message

Chuhong Yuan Dec. 10, 2019, 9:14 a.m. UTC
  The driver misses checks for devm_regulator_get().
Add checks to fix it.

Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
---
 drivers/media/platform/omap3isp/isp.c | 9 +++++++++
 1 file changed, 9 insertions(+)
  

Comments

Laurent Pinchart Dec. 12, 2019, 11:42 p.m. UTC | #1
Hi Chuhong,

(CC'ing Sakari Ailus)

Thank you for the patch.

On Tue, Dec 10, 2019 at 05:14:28PM +0800, Chuhong Yuan wrote:
> The driver misses checks for devm_regulator_get().
> Add checks to fix it.
> 
> Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
> ---
>  drivers/media/platform/omap3isp/isp.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
> index 327c5716922a..ef3502182c3a 100644
> --- a/drivers/media/platform/omap3isp/isp.c
> +++ b/drivers/media/platform/omap3isp/isp.c
> @@ -2312,7 +2312,16 @@ static int isp_probe(struct platform_device *pdev)
>  
>  	/* Regulators */
>  	isp->isp_csiphy1.vdd = devm_regulator_get(&pdev->dev, "vdd-csiphy1");
> +	if (IS_ERR(isp->isp_csiphy1.vdd)) {
> +		ret = PTR_ERR(isp->isp_csiphy1.vdd);
> +		goto error;
> +	}
> +
>  	isp->isp_csiphy2.vdd = devm_regulator_get(&pdev->dev, "vdd-csiphy2");
> +	if (IS_ERR(isp->isp_csiphy2.vdd)) {
> +		ret = PTR_ERR(isp->isp_csiphy2.vdd);
> +		goto error;
> +	}

Those regulators are currently checked at runtime in
omap3isp_csiphy_acquire(). The check is incorrect as it checks for NULL
while vdd would contain an ERR_PTR, so there's a real issue. However,
not all platforms support the CSI-2 receivers, and only omap3-n950.dts
and omap3-n9.dts provide the regulators. They thus need to be kept
optional.

Would you like to provide another patch that fixes the checks in
omap3isp_csiphy_acquire() ?

>  
>  	/* Clocks
>  	 *
  

Patch

diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index 327c5716922a..ef3502182c3a 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -2312,7 +2312,16 @@  static int isp_probe(struct platform_device *pdev)
 
 	/* Regulators */
 	isp->isp_csiphy1.vdd = devm_regulator_get(&pdev->dev, "vdd-csiphy1");
+	if (IS_ERR(isp->isp_csiphy1.vdd)) {
+		ret = PTR_ERR(isp->isp_csiphy1.vdd);
+		goto error;
+	}
+
 	isp->isp_csiphy2.vdd = devm_regulator_get(&pdev->dev, "vdd-csiphy2");
+	if (IS_ERR(isp->isp_csiphy2.vdd)) {
+		ret = PTR_ERR(isp->isp_csiphy2.vdd);
+		goto error;
+	}
 
 	/* Clocks
 	 *