mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 15:29:16 +00:00
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: Julia Lawall <julia@diku.dk> Acked-by: Julia Lawall <julia@diku.dk> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
49954c1567
commit
56adf7e812
@ -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 @@ eirq_err:
|
||||
rst_err:
|
||||
kfree(shdev);
|
||||
|
||||
shdev_err:
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user