Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -345,8 +345,10 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
	}

	machine_data = kzalloc(sizeof(struct mpc8610_hpcd_data), GFP_KERNEL);
	if (!machine_data)
		return -ENOMEM;
	if (!machine_data) {
		ret = -ENOMEM;
		goto error_alloc;
	}

	machine_data->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev);
	machine_data->dai[0].ops = &mpc8610_hpcd_ops;
@@ -494,7 +496,7 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
	ret = platform_device_add(sound_device);
	if (ret) {
		dev_err(&pdev->dev, "platform device add failed\n");
		goto error;
		goto error_sound;
	}
	dev_set_drvdata(&pdev->dev, sound_device);

@@ -502,14 +504,12 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)

	return 0;

error:
	of_node_put(codec_np);

	if (sound_device)
error_sound:
	platform_device_unregister(sound_device);

error:
	kfree(machine_data);

error_alloc:
	of_node_put(codec_np);
	return ret;
}