Skip to contentSkip to conversation

coda: Check the return value from clk_prepare_enable()

PATCH In review Fabio Estevam 2 participants 3 messages Jul 20, 2013 – Jul 22, 2013 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/2 coda: Check the return value from clk_prepare_enable()

From: Fabio Estevam <[email protected]>

clk_prepare_enable() may fail, so let's check its return value and propagate it in the case of error.

---
Changes since v1:
- Add missing 'if'

 drivers/media/platform/coda.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
drivers/media/platform/coda.c +9 -2
index df4ada88..486db30 100644
@@ -1559,14 +1559,21 @@ static int coda_open(struct file *file)
 	list_add(&ctx->list, &dev->instances);
 	coda_unlock(ctx);
 
-	clk_prepare_enable(dev->clk_per);
-	clk_prepare_enable(dev->clk_ahb);
+	ret = clk_prepare_enable(dev->clk_per);
+	if (ret)
+		goto err;
+
+	ret = clk_prepare_enable(dev->clk_ahb);
+	if (ret)
+		goto err_clk_ahb;
 
 	v4l2_dbg(1, coda_debug, &dev->v4l2_dev, "Created instance %d (%p)\n",
 		 ctx->idx, ctx);
 
 	return 0;
 
+err_clk_ahb:
+	clk_disable_unprepare(dev->clk_per);
 err:
 	v4l2_fh_del(&ctx->fh);
 	v4l2_fh_exit(&ctx->fh);
Signature · 1 line
1.8.1.2
#1 lore raw

PATCH 2/2 coda: No need to check the return value of platform_get_resource()

From: Fabio Estevam <[email protected]>

When using devm_ioremap_resource(), we do not need to check the return value of platform_get_resource(), so just remove it.

---
Changes since v1:
- None

 drivers/media/platform/coda.c | 5 -----
 1 file changed, 5 deletions(-)
drivers/media/platform/coda.c +0 -5
index 486db30..f9a4b33 100644
@@ -2039,11 +2039,6 @@ static int coda_probe(struct platform_device *pdev)
 
 	/* Get  memory for physical registers */
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "failed to get memory region resource\n");
-		return -ENOENT;
-	}
-
 	dev->regs_base = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(dev->regs_base))
 		return PTR_ERR(dev->regs_base);
Signature · 1 line
1.8.1.2
#2 lore raw
In reply to Fabio Estevam

Hi Fabio,

Am Samstag, den 20.07.2013, 16:10 -0300 schrieb Fabio Estevam:

Quoted 19 lines

From: Fabio Estevam <[email protected]>

clk_prepare_enable() may fail, so let's check its return value and propagate it in the case of error.

---
Changes since v1:
- Add missing 'if'

 drivers/media/platform/coda.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
drivers/media/platform/coda.c +0 -0
index df4ada88..486db30 100644

drivers/media/platform/coda.c static int coda_open(struct file *file) · line 1560

Quoted 2 lines
drivers/media/platform/coda.c +0 -0
@@ -1559,14 +1559,21 @@ static int coda_open(struct file *file)
 	list_add(&ctx->list, &dev->instances);
 	coda_unlock(ctx);

Now this list_add is not reverted in the error path, ...

drivers/media/platform/coda.c static int coda_open(struct file *file) · line 1568

Quoted 10 lines
drivers/media/platform/coda.c +7 -2
-	clk_prepare_enable(dev->clk_per);
-	clk_prepare_enable(dev->clk_ahb);
+	ret = clk_prepare_enable(dev->clk_per);
+	if (ret)
+		goto err;
+
+	ret = clk_prepare_enable(dev->clk_ahb);
+	if (ret)
+		goto err_clk_ahb;

... better move it down here.

drivers/media/platform/coda.c static int coda_open(struct file *file) · line 1579

Quoted 10 lines
drivers/media/platform/coda.c +2 -0
 	v4l2_dbg(1, coda_debug, &dev->v4l2_dev, "Created instance %d (%p)\n",
 		 ctx->idx, ctx);
 
 	return 0;
 
+err_clk_ahb:
+	clk_disable_unprepare(dev->clk_per);
 err:
 	v4l2_fh_del(&ctx->fh);
 	v4l2_fh_exit(&ctx->fh);

regards
Philipp