diff options
author | Julia Lawall <julia@diku.dk> | 2011-08-21 15:18:45 +0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-08-23 02:34:37 +0400 |
commit | 0bb98ba2b045e53b4724f34509455b7653c329d3 (patch) | |
tree | 1349e4b612c47fc2bced520f673912391a03ba30 | |
parent | bbe8ff5e25afd4d06c8a8bad009aca5f0d0c22ef (diff) | |
download | linux-0bb98ba2b045e53b4724f34509455b7653c329d3.tar.xz |
sound/soc/mxs/mxs-saif.c: add missing kfree
Move the test on pdev->id before the kzalloc to avoid requiring kfree when
the test fails. This fix was suggested by Wolfram Sang.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
identifier x;
expression E1!=0,E2,E3,E4;
statement S;
iterator I;
@@
(
if (...) { ... when != kfree(x)
when != x = E3
when != E3 = x
* return ...;
}
... when != x = E2
when != I(...,x,...) S
if (...) { ... when != x = E4
kfree(x); ... return ...; }
)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Dong Aisheng <b29396@freescale.com>
Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | sound/soc/mxs/mxs-saif.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c index 530017f7d14a..af5734f6dab7 100644 --- a/sound/soc/mxs/mxs-saif.c +++ b/sound/soc/mxs/mxs-saif.c @@ -521,12 +521,13 @@ static int mxs_saif_probe(struct platform_device *pdev) struct mxs_saif *saif; int ret = 0; + if (pdev->id >= ARRAY_SIZE(mxs_saif)) + return -EINVAL; + saif = kzalloc(sizeof(*saif), GFP_KERNEL); if (!saif) return -ENOMEM; - if (pdev->id >= ARRAY_SIZE(mxs_saif)) - return -EINVAL; mxs_saif[pdev->id] = saif; saif->clk = clk_get(&pdev->dev, NULL); |