mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 09:31:50 +00:00
crypto: caam - Introduce the use of the managed version of kzalloc
This patch moves data allocated using kzalloc to managed data allocated using devm_kzalloc and cleans now unnecessary kfrees in probe and remove functions. Also, linux/device.h is added to make sure the devm_*() routine declarations are unambiguously available. Earlier, in the probe function ctrlpriv was leaked on the failure of ctrl = of_iomap(nprop, 0); as well as on the failure of ctrlpriv->jrpdev = kzalloc(...); . These two bugs have been fixed by the patch. The following Coccinelle semantic patch was used for making the change: identifier p, probefn, removefn; @@ struct platform_driver p = { .probe = probefn, .remove = removefn, }; @prb@ identifier platform.probefn, pdev; expression e, e1, e2; @@ probefn(struct platform_device *pdev, ...) { <+... - e = kzalloc(e1, e2) + e = devm_kzalloc(&pdev->dev, e1, e2) ... ?-kfree(e); ...+> } @rem depends on prb@ identifier platform.removefn; expression e; @@ removefn(...) { <... - kfree(e); ...> } Signed-off-by: Himangi Saraogi <himangi774@gmail.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Reviewed-by: Marek Vasut <marex@denx.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
42614b0582
commit
4776d38127
@ -5,6 +5,7 @@
|
|||||||
* Copyright 2008-2012 Freescale Semiconductor, Inc.
|
* Copyright 2008-2012 Freescale Semiconductor, Inc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/device.h>
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
|
|
||||||
@ -295,9 +296,6 @@ static int caam_remove(struct platform_device *pdev)
|
|||||||
/* Unmap controller region */
|
/* Unmap controller region */
|
||||||
iounmap(&topregs->ctrl);
|
iounmap(&topregs->ctrl);
|
||||||
|
|
||||||
kfree(ctrlpriv->jrpdev);
|
|
||||||
kfree(ctrlpriv);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,7 +380,8 @@ static int caam_probe(struct platform_device *pdev)
|
|||||||
#endif
|
#endif
|
||||||
u64 cha_vid;
|
u64 cha_vid;
|
||||||
|
|
||||||
ctrlpriv = kzalloc(sizeof(struct caam_drv_private), GFP_KERNEL);
|
ctrlpriv = devm_kzalloc(&pdev->dev, sizeof(struct caam_drv_private),
|
||||||
|
GFP_KERNEL);
|
||||||
if (!ctrlpriv)
|
if (!ctrlpriv)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -432,8 +431,9 @@ static int caam_probe(struct platform_device *pdev)
|
|||||||
of_device_is_compatible(np, "fsl,sec4.0-job-ring"))
|
of_device_is_compatible(np, "fsl,sec4.0-job-ring"))
|
||||||
rspec++;
|
rspec++;
|
||||||
|
|
||||||
ctrlpriv->jrpdev = kzalloc(sizeof(struct platform_device *) * rspec,
|
ctrlpriv->jrpdev = devm_kzalloc(&pdev->dev,
|
||||||
GFP_KERNEL);
|
sizeof(struct platform_device *) * rspec,
|
||||||
|
GFP_KERNEL);
|
||||||
if (ctrlpriv->jrpdev == NULL) {
|
if (ctrlpriv->jrpdev == NULL) {
|
||||||
iounmap(&topregs->ctrl);
|
iounmap(&topregs->ctrl);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
Loading…
Reference in New Issue
Block a user