Commit c09f5ca7 authored by Julia Lawall's avatar Julia Lawall Committed by Mark Brown

sound/soc/fsl/mpc8610_hpcd.c: add missing of_node_put

The first change is to add an of_node_put, since codec_np has previously
been allocated.  The rest of the patch reorganizes the error handling code
so the only code executed is that which is needed.

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 != of_node_put(x)
               when != x = E3
               when != E3 = x
*  return ...;
 }
... when != x = E2
    when != I(...,x,...) S
if (...) { ... when != x = E4
 of_node_put(x); ... return ...; }
)
// </smpl>
Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
Acked-by: default avatarTimur Tabi <timur@freescale.com>
Acked-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 178b279b
...@@ -345,8 +345,10 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev) ...@@ -345,8 +345,10 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
} }
machine_data = kzalloc(sizeof(struct mpc8610_hpcd_data), GFP_KERNEL); machine_data = kzalloc(sizeof(struct mpc8610_hpcd_data), GFP_KERNEL);
if (!machine_data) if (!machine_data) {
return -ENOMEM; ret = -ENOMEM;
goto error_alloc;
}
machine_data->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev); machine_data->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev);
machine_data->dai[0].ops = &mpc8610_hpcd_ops; machine_data->dai[0].ops = &mpc8610_hpcd_ops;
...@@ -494,7 +496,7 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev) ...@@ -494,7 +496,7 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
ret = platform_device_add(sound_device); ret = platform_device_add(sound_device);
if (ret) { if (ret) {
dev_err(&pdev->dev, "platform device add failed\n"); dev_err(&pdev->dev, "platform device add failed\n");
goto error; goto error_sound;
} }
dev_set_drvdata(&pdev->dev, sound_device); dev_set_drvdata(&pdev->dev, sound_device);
...@@ -502,14 +504,12 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev) ...@@ -502,14 +504,12 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
return 0; return 0;
error: error_sound:
of_node_put(codec_np);
if (sound_device)
platform_device_unregister(sound_device); platform_device_unregister(sound_device);
error:
kfree(machine_data); kfree(machine_data);
error_alloc:
of_node_put(codec_np);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment