NFC: nfcmrvl: Fix possible memory leak issue
This patch fixes memory leaks in the error paths of nfcmrvl_nci_register_dev() routine. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
Родитель
b711ad524b
Коммит
bb55dc2ae4
|
@ -112,7 +112,8 @@ struct nfcmrvl_private *nfcmrvl_nci_register_dev(void *drv_data,
|
||||||
priv->ndev = nci_allocate_device(&nfcmrvl_nci_ops, protocols, 0, 0);
|
priv->ndev = nci_allocate_device(&nfcmrvl_nci_ops, protocols, 0, 0);
|
||||||
if (!priv->ndev) {
|
if (!priv->ndev) {
|
||||||
nfc_err(dev, "nci_allocate_device failed");
|
nfc_err(dev, "nci_allocate_device failed");
|
||||||
return ERR_PTR(-ENOMEM);
|
rc = -ENOMEM;
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
nci_set_drvdata(priv->ndev, priv);
|
nci_set_drvdata(priv->ndev, priv);
|
||||||
|
@ -121,11 +122,15 @@ struct nfcmrvl_private *nfcmrvl_nci_register_dev(void *drv_data,
|
||||||
if (rc) {
|
if (rc) {
|
||||||
nfc_err(dev, "nci_register_device failed %d", rc);
|
nfc_err(dev, "nci_register_device failed %d", rc);
|
||||||
nci_free_device(priv->ndev);
|
nci_free_device(priv->ndev);
|
||||||
return ERR_PTR(rc);
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
nfc_info(dev, "registered with nci successfully\n");
|
nfc_info(dev, "registered with nci successfully\n");
|
||||||
return priv;
|
return priv;
|
||||||
|
|
||||||
|
error:
|
||||||
|
kfree(priv);
|
||||||
|
return ERR_PTR(rc);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev);
|
EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче