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

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
......@@ -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;
}
......
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