aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmitkumar Karwar <akarwar@marvell.com>2014-01-08 13:52:27 -0500
committerSamuel Ortiz <sameo@linux.intel.com>2014-01-08 19:27:20 -0500
commitbb55dc2ae4367b8f711d43a2f8668a6ed42c4fd3 (patch)
tree48417a9794a29f28b9870c4279a1e3547b96cf8a
parentb711ad524bf5a6a078c4d0a1a44ca1db204802f6 (diff)
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>
-rw-r--r--drivers/nfc/nfcmrvl/main.c9
1 files changed, 7 insertions, 2 deletions
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,
112 priv->ndev = nci_allocate_device(&nfcmrvl_nci_ops, protocols, 0, 0); 112 priv->ndev = nci_allocate_device(&nfcmrvl_nci_ops, protocols, 0, 0);
113 if (!priv->ndev) { 113 if (!priv->ndev) {
114 nfc_err(dev, "nci_allocate_device failed"); 114 nfc_err(dev, "nci_allocate_device failed");
115 return ERR_PTR(-ENOMEM); 115 rc = -ENOMEM;
116 goto error;
116 } 117 }
117 118
118 nci_set_drvdata(priv->ndev, priv); 119 nci_set_drvdata(priv->ndev, priv);
@@ -121,11 +122,15 @@ struct nfcmrvl_private *nfcmrvl_nci_register_dev(void *drv_data,
121 if (rc) { 122 if (rc) {
122 nfc_err(dev, "nci_register_device failed %d", rc); 123 nfc_err(dev, "nci_register_device failed %d", rc);
123 nci_free_device(priv->ndev); 124 nci_free_device(priv->ndev);
124 return ERR_PTR(rc); 125 goto error;
125 } 126 }
126 127
127 nfc_info(dev, "registered with nci successfully\n"); 128 nfc_info(dev, "registered with nci successfully\n");
128 return priv; 129 return priv;
130
131error:
132 kfree(priv);
133 return ERR_PTR(rc);
129} 134}
130EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev); 135EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev);
131 136