aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/pblk-init.c
diff options
context:
space:
mode:
authorJavier González <[email protected]>2018-01-05 13:16:18 +0000
committerJens Axboe <[email protected]>2018-01-05 15:50:12 +0000
commitc6847e4e359f01745bad5aea0fa20a0c5edfdc51 (patch)
tree7618567667cc581073520a6f0d008b94bc773058 /drivers/lightnvm/pblk-init.c
parentlightnvm: pblk: ensure kthread alloc. before kicking it (diff)
downloadkernel-c6847e4e359f01745bad5aea0fa20a0c5edfdc51.tar.gz
kernel-c6847e4e359f01745bad5aea0fa20a0c5edfdc51.zip
lightnvm: pblk: free write buffer on init failure
Refactor the way we free the write buffer to ensure that all entries get freed in case of an error on the init sequence. Signed-off-by: Javier González <[email protected]> Signed-off-by: Matias Bjørling <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r--drivers/lightnvm/pblk-init.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index 7e11926830db..8c40bc358b71 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -355,6 +355,8 @@ static void pblk_core_free(struct pblk *pblk)
mempool_destroy(pblk->e_rq_pool);
mempool_destroy(pblk->w_rq_pool);
+ pblk_rwb_free(pblk);
+
pblk_free_global_caches(pblk);
}
@@ -931,7 +933,6 @@ static void pblk_tear_down(struct pblk *pblk)
pblk_pipeline_stop(pblk);
pblk_writer_stop(pblk);
pblk_rb_sync_l2p(&pblk->rwb);
- pblk_rwb_free(pblk);
pblk_rl_free(&pblk->rl);
pr_debug("pblk: consistent tear down\n");