From: Igor Konopko <igor.j.konopko@xxxxxxxxx> Fixes the GC error case when moving a line back to closed state while releasing additional references. Signed-off-by: Igor Konopko <igor.j.konopko@xxxxxxxxx> Reviewed-by: Hans Holmberg <hans.holmberg@xxxxxxxxxxxx> Reviewed-by: Javier González <javier@xxxxxxxxxxx> Signed-off-by: Matias Bjørling <mb@xxxxxxxxxxx> --- drivers/lightnvm/pblk-gc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/lightnvm/pblk-gc.c b/drivers/lightnvm/pblk-gc.c index 26a52ea7ec45..901e49951ab5 100644 --- a/drivers/lightnvm/pblk-gc.c +++ b/drivers/lightnvm/pblk-gc.c @@ -290,8 +290,11 @@ static void pblk_gc_line_prepare_ws(struct work_struct *work) fail_free_ws: kfree(line_ws); + /* Line goes back to closed state, so we cannot release additional + * reference for line, since we do that only when we want to do + * gc to free line state transition. + */ pblk_put_line_back(pblk, line); - kref_put(&line->ref, pblk_line_put); atomic_dec(&gc->read_inflight_gc); pblk_err(pblk, "failed to GC line %d\n", line->id); -- 2.19.1