Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28bd1094 authored by Hans Holmberg's avatar Hans Holmberg Committed by Jens Axboe
Browse files

lightnvm: pblk: remove spinlock when freeing line metadata



Lockdep complains about being in atomic context while freeing line
metadata - and rightly so as we take a spinlock and end up calling
vfree that might sleep(in pblk_mfree).

There is no need for holding the line manager free_lock while
freeing line metadata as the pipeline as stopped, so remove the lock.

Fixes: 588726d3 ("lightnvm: pblk: fail gracefully on irrec. error")
Signed-off-by: default avatarHans Holmberg <hans.holmberg@cnexlabs.com>
Signed-off-by: default avatarMatias Bjørling <m@bjorling.me>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 03e868eb
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -393,13 +393,11 @@ static void pblk_line_meta_free(struct pblk *pblk)
	kfree(l_mg->bb_aux);
	kfree(l_mg->vsc_list);

	spin_lock(&l_mg->free_lock);
	for (i = 0; i < PBLK_DATA_LINES; i++) {
		kfree(l_mg->sline_meta[i]);
		pblk_mfree(l_mg->eline_meta[i]->buf, l_mg->emeta_alloc_type);
		kfree(l_mg->eline_meta[i]);
	}
	spin_unlock(&l_mg->free_lock);

	kfree(pblk->lines);
}