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

Commit 56adf7e8 authored by Dan Williams's avatar Dan Williams
Browse files

shdma: fix initialization error handling



1/ Error handling code following a kzalloc should free the allocated data.
2/ Report an error when no platform data is detected

Both problems fixed by moving the platform data check before the allocation,
and allows a goto to be killed.

Reported-by: default avatarJulia Lawall <julia@diku.dk>
Acked-by: default avatarJulia Lawall <julia@diku.dk>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 49954c15
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -640,17 +640,16 @@ static int __init sh_dmae_probe(struct platform_device *pdev)
#endif
	struct sh_dmae_device *shdev;

	/* get platform data */
	if (!pdev->dev.platform_data)
		return -ENODEV;

	shdev = kzalloc(sizeof(struct sh_dmae_device), GFP_KERNEL);
	if (!shdev) {
		dev_err(&pdev->dev, "No enough memory\n");
		err = -ENOMEM;
		goto shdev_err;
		return -ENOMEM;
	}

	/* get platform data */
	if (!pdev->dev.platform_data)
		goto shdev_err;

	/* platform data */
	memcpy(&shdev->pdata, pdev->dev.platform_data,
			sizeof(struct sh_dmae_pdata));
@@ -722,7 +721,6 @@ static int __init sh_dmae_probe(struct platform_device *pdev)
rst_err:
	kfree(shdev);

shdev_err:
	return err;
}