summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Konopko <igor.j.konopko@intel.com>2019-05-04 20:37:46 +0200
committerJens Axboe <axboe@kernel.dk>2019-05-06 18:19:16 +0200
commit7e5434eecefce78b40526e44de3d4559aaaf1b90 (patch)
tree4143edb1920c4a50bec119d8c7571a17b442dc38
parentblock: don't drain in-progress dispatch in blk_cleanup_queue() (diff)
downloadlinux-7e5434eecefce78b40526e44de3d4559aaaf1b90.tar.xz
linux-7e5434eecefce78b40526e44de3d4559aaaf1b90.zip
lightnvm: pblk: line reference fix in GC
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@intel.com> Reviewed-by: Hans Holmberg <hans.holmberg@cnexlabs.com> Reviewed-by: Javier González <javier@javigon.com> Signed-off-by: Matias Bjørling <mb@lightnvm.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/lightnvm/pblk-gc.c5
1 files changed, 4 insertions, 1 deletions
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 @@ fail_free_invalid_bitmap:
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);