summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Holmberg <hans.holmberg@cnexlabs.com>2019-02-11 13:25:02 +0100
committerJens Axboe <axboe@kernel.dk>2019-02-11 16:18:07 +0100
commitf9324980d7300f961e9895ad94d5ea71c0fe187e (patch)
tree2b74f9cda433981e68163dfda4666df16fc0aaa6
parentblk-sysfs: Rework documention of __blk_release_queue (diff)
downloadlinux-f9324980d7300f961e9895ad94d5ea71c0fe187e.tar.xz
linux-f9324980d7300f961e9895ad94d5ea71c0fe187e.zip
lightnvm: pblk: stop taking the free lock in in pblk_lines_free
pblk_line_meta_free might sleep (it can end up calling vfree, depending on how we allocate lba lists), and this can lead to a BUG() if we wake up on a different cpu and release the lock. As there is no point of grabbing the free lock when pblk has shut down, remove the lock. Signed-off-by: Hans Holmberg <hans.holmberg@cnexlabs.com> Signed-off-by: Matias Bjørling <mb@lightnvm.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/lightnvm/pblk-init.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index f9a3e47b6a93..eb0135c77805 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -584,14 +584,12 @@ static void pblk_lines_free(struct pblk *pblk)
struct pblk_line *line;
int i;
- spin_lock(&l_mg->free_lock);
for (i = 0; i < l_mg->nr_lines; i++) {
line = &pblk->lines[i];
pblk_line_free(line);
pblk_line_meta_free(l_mg, line);
}
- spin_unlock(&l_mg->free_lock);
pblk_line_mg_free(pblk);