On Mon, 2010-10-18 at 16:11 +0200, Julia Lawall wrote: > In this code, 0 is returned on failure, even though other > failures return -ENOMEM or other similar values. > > A simplified version of the semantic match that finds this problem is as > follows: (http://coccinelle.lip6.fr/) > > // <smpl> > @a@ > identifier alloc; > identifier ret; > constant C; > expression x; > @@ > > x = alloc(...); > if (x == NULL) { <+... \(ret = -C; \| return -C; \) ...+> } > > @@ > identifier f, a.alloc; > expression ret; > expression x,e1,e2,e3; > @@ > > ret = 0 > ... when != ret = e1 > *x = alloc(...) > ... when != ret = e2 > if (x == NULL) { ... when != ret = e3 > return ret; > } > // </smpl> > > Signed-off-by: Julia Lawall <julia@xxxxxxx> > > --- > Another call to platform_get_resource in the same function returns -ENODEV > on error, so I have used that value. > > sound/soc/davinci/davinci-mcasp.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c > index c8e97dc..86918ee 100644 > --- a/sound/soc/davinci/davinci-mcasp.c > +++ b/sound/soc/davinci/davinci-mcasp.c > @@ -898,6 +898,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) > res = platform_get_resource(pdev, IORESOURCE_DMA, 0); > if (!res) { > dev_err(&pdev->dev, "no DMA resource\n"); > + ret = -ENODEV; > goto err_release_region; > } > > @@ -912,6 +913,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) > res = platform_get_resource(pdev, IORESOURCE_DMA, 1); > if (!res) { > dev_err(&pdev->dev, "no DMA resource\n"); > + ret = -ENODEV; > goto err_release_region; > } > > Acked-by: Liam Girdwood <lrg@xxxxxxxxxxxxxxx> -- Freelance Developer, SlimLogic Ltd ASoC and Voltage Regulator Maintainer. http://www.slimlogic.co.uk -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html