diff options
author | Javier González <jg@lightnvm.io> | 2017-04-15 14:55:43 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-04-16 12:06:25 -0400 |
commit | 7d1ef2f408abecc05f9dfaec1095098a090879dc (patch) | |
tree | f27c6b044f8c1abe71be1a19ffe817b9080e3f24 | |
parent | edee1bdd66bf0fda46a176bc3ee5c992dbbc466e (diff) |
lightnvm: fix cleanup order of disk on init error
Reorder disk allocation such that the disk structure can be put
safely.
Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | drivers/lightnvm/core.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index 5eea3d5ecc30..5f84d2a418f6 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c | |||
@@ -264,15 +264,15 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create) | |||
264 | goto err_t; | 264 | goto err_t; |
265 | } | 265 | } |
266 | 266 | ||
267 | tdisk = alloc_disk(0); | ||
268 | if (!tdisk) | ||
269 | goto err_dev; | ||
270 | |||
267 | tqueue = blk_alloc_queue_node(GFP_KERNEL, dev->q->node); | 271 | tqueue = blk_alloc_queue_node(GFP_KERNEL, dev->q->node); |
268 | if (!tqueue) | 272 | if (!tqueue) |
269 | goto err_dev; | 273 | goto err_disk; |
270 | blk_queue_make_request(tqueue, tt->make_rq); | 274 | blk_queue_make_request(tqueue, tt->make_rq); |
271 | 275 | ||
272 | tdisk = alloc_disk(0); | ||
273 | if (!tdisk) | ||
274 | goto err_queue; | ||
275 | |||
276 | sprintf(tdisk->disk_name, "%s", create->tgtname); | 276 | sprintf(tdisk->disk_name, "%s", create->tgtname); |
277 | tdisk->flags = GENHD_FL_EXT_DEVT; | 277 | tdisk->flags = GENHD_FL_EXT_DEVT; |
278 | tdisk->major = 0; | 278 | tdisk->major = 0; |
@@ -308,9 +308,9 @@ err_sysfs: | |||
308 | if (tt->exit) | 308 | if (tt->exit) |
309 | tt->exit(targetdata); | 309 | tt->exit(targetdata); |
310 | err_init: | 310 | err_init: |
311 | put_disk(tdisk); | ||
312 | err_queue: | ||
313 | blk_cleanup_queue(tqueue); | 311 | blk_cleanup_queue(tqueue); |
312 | err_disk: | ||
313 | put_disk(tdisk); | ||
314 | err_dev: | 314 | err_dev: |
315 | nvm_remove_tgt_dev(tgt_dev, 0); | 315 | nvm_remove_tgt_dev(tgt_dev, 0); |
316 | err_t: | 316 | err_t: |