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:
Amitkumar Karwar 2014-01-08 10:52:27 -08:00 коммит произвёл Samuel Ortiz
Родитель b711ad524b
Коммит bb55dc2ae4
1 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

@ -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);