From: Amitkumar Karwar <akarwar@marvell.com>
Date: Wed, 8 Jan 2014 18:52:27 +0000 (-0800)
Subject: NFC: nfcmrvl: Fix possible memory leak issue
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=bb55dc2ae4367b8f711d43a2f8668a6ed42c4fd3;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git

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>
---

diff --git a/drivers/nfc/nfcmrvl/main.c b/drivers/nfc/nfcmrvl/main.c
index 5f91d4571429..85e8bcf98693 100644
--- a/drivers/nfc/nfcmrvl/main.c
+++ b/drivers/nfc/nfcmrvl/main.c
@@ -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);
 	if (!priv->ndev) {
 		nfc_err(dev, "nci_allocate_device failed");
-		return ERR_PTR(-ENOMEM);
+		rc = -ENOMEM;
+		goto error;
 	}
 
 	nci_set_drvdata(priv->ndev, priv);
@@ -121,11 +122,15 @@ struct nfcmrvl_private *nfcmrvl_nci_register_dev(void *drv_data,
 	if (rc) {
 		nfc_err(dev, "nci_register_device failed %d", rc);
 		nci_free_device(priv->ndev);
-		return ERR_PTR(rc);
+		goto error;
 	}
 
 	nfc_info(dev, "registered with nci successfully\n");
 	return priv;
+
+error:
+	kfree(priv);
+	return ERR_PTR(rc);
 }
 EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev);