diff options
author | Amitkumar Karwar <akarwar@marvell.com> | 2014-01-08 13:52:27 -0500 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2014-01-08 19:27:20 -0500 |
commit | bb55dc2ae4367b8f711d43a2f8668a6ed42c4fd3 (patch) | |
tree | 48417a9794a29f28b9870c4279a1e3547b96cf8a | |
parent | b711ad524bf5a6a078c4d0a1a44ca1db204802f6 (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.c | 9 |
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 | |||
131 | error: | ||
132 | kfree(priv); | ||
133 | return ERR_PTR(rc); | ||
129 | } | 134 | } |
130 | EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev); | 135 | EXPORT_SYMBOL_GPL(nfcmrvl_nci_register_dev); |
131 | 136 | ||