Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Javier González and committed by
Jens Axboe
7d1ef2f4 edee1bdd

+8 -8
+8 -8
drivers/lightnvm/core.c
··· 264 264 goto err_t; 265 265 } 266 266 267 - tqueue = blk_alloc_queue_node(GFP_KERNEL, dev->q->node); 268 - if (!tqueue) 269 - goto err_dev; 270 - blk_queue_make_request(tqueue, tt->make_rq); 271 - 272 267 tdisk = alloc_disk(0); 273 268 if (!tdisk) 274 - goto err_queue; 269 + goto err_dev; 270 + 271 + tqueue = blk_alloc_queue_node(GFP_KERNEL, dev->q->node); 272 + if (!tqueue) 273 + goto err_disk; 274 + blk_queue_make_request(tqueue, tt->make_rq); 275 275 276 276 sprintf(tdisk->disk_name, "%s", create->tgtname); 277 277 tdisk->flags = GENHD_FL_EXT_DEVT; ··· 308 308 if (tt->exit) 309 309 tt->exit(targetdata); 310 310 err_init: 311 - put_disk(tdisk); 312 - err_queue: 313 311 blk_cleanup_queue(tqueue); 312 + err_disk: 313 + put_disk(tdisk); 314 314 err_dev: 315 315 nvm_remove_tgt_dev(tgt_dev, 0); 316 316 err_t: