diff options
author | Wenwei Tao <ww.tao0320@gmail.com> | 2015-11-20 07:47:53 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-11-20 10:33:14 -0500 |
commit | 480fc0db819d706ea5608545a12d33cf8d5a31ab (patch) | |
tree | 0d3b5af91393d96ef5903327a85ec549b00cf052 | |
parent | 54514aa465e94316a4bf1c5dfe970536bec3e76f (diff) |
lightnvm: wrong return value and redundant free
The return value should be non-zero under error conditions.
Remove nvme_free(dev) to avoid free dev more than once.
Signed-off-by: Wenwei Tao <ww.tao0320@gmail.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | drivers/lightnvm/core.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index 8a556f3f36bb..bed47e7249a9 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c | |||
@@ -222,14 +222,13 @@ static void nvm_free(struct nvm_dev *dev) | |||
222 | static int nvm_init(struct nvm_dev *dev) | 222 | static int nvm_init(struct nvm_dev *dev) |
223 | { | 223 | { |
224 | struct nvmm_type *mt; | 224 | struct nvmm_type *mt; |
225 | int ret = 0; | 225 | int ret = -EINVAL; |
226 | 226 | ||
227 | if (!dev->q || !dev->ops) | 227 | if (!dev->q || !dev->ops) |
228 | return -EINVAL; | 228 | return ret; |
229 | 229 | ||
230 | if (dev->ops->identity(dev->q, &dev->identity)) { | 230 | if (dev->ops->identity(dev->q, &dev->identity)) { |
231 | pr_err("nvm: device could not be identified\n"); | 231 | pr_err("nvm: device could not be identified\n"); |
232 | ret = -EINVAL; | ||
233 | goto err; | 232 | goto err; |
234 | } | 233 | } |
235 | 234 | ||
@@ -275,7 +274,6 @@ static int nvm_init(struct nvm_dev *dev) | |||
275 | dev->nr_chnls); | 274 | dev->nr_chnls); |
276 | return 0; | 275 | return 0; |
277 | err: | 276 | err: |
278 | nvm_free(dev); | ||
279 | pr_err("nvm: failed to initialize nvm\n"); | 277 | pr_err("nvm: failed to initialize nvm\n"); |
280 | return ret; | 278 | return ret; |
281 | } | 279 | } |