summaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm
diff options
context:
space:
mode:
authorJavier González <javier@cnexlabs.com>2018-01-05 14:16:18 +0100
committerJens Axboe <axboe@kernel.dk>2018-01-05 16:50:12 +0100
commitc6847e4e359f01745bad5aea0fa20a0c5edfdc51 (patch)
tree7618567667cc581073520a6f0d008b94bc773058 /drivers/lightnvm
parentlightnvm: pblk: ensure kthread alloc. before kicking it (diff)
downloadlinux-c6847e4e359f01745bad5aea0fa20a0c5edfdc51.tar.xz
linux-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 <javier@cnexlabs.com> Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/lightnvm')
-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");