Message ID | 1374347441-15662-1-git-send-email-festevam@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Fabio, Am Samstag, den 20.07.2013, 16:10 -0300 schrieb Fabio Estevam: > From: Fabio Estevam <fabio.estevam@freescale.com> > > clk_prepare_enable() may fail, so let's check its return value and propagate it > in the case of error. > > Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> > > --- > Changes since v1: > - Add missing 'if' > > drivers/media/platform/coda.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c > index df4ada88..486db30 100644 > --- a/drivers/media/platform/coda.c > +++ b/drivers/media/platform/coda.c > @@ -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, ... > > - 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. > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c index df4ada88..486db30 100644 --- a/drivers/media/platform/coda.c +++ b/drivers/media/platform/coda.c @@ -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);