Did you ever see this in the wild? The only time pblk_gc_line returns an error is if kmalloc(sizeof(struct pblk_line_ws), GFP_KERNEL); fails, and then we're in real trouble :) Reviewed-by: Hans Holmberg <hans.holmberg@xxxxxxxxxxxx> On Mon, Mar 4, 2019 at 8:38 AM Javier González <javier@xxxxxxxxxxx> wrote: > > > On 27 Feb 2019, at 18.14, Igor Konopko <igor.j.konopko@xxxxxxxxx> wrote: > > > > Currently in case of error returned by pblk_gc_line > > to pblk_gc_read we leave current line unassigned > > from all the lists. This patch fixes that issue. > > > > Signed-off-by: Igor Konopko <igor.j.konopko@xxxxxxxxx> > > --- > > drivers/lightnvm/pblk-gc.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/lightnvm/pblk-gc.c b/drivers/lightnvm/pblk-gc.c > > index 511ed0d5333c..533da6ea3e15 100644 > > --- a/drivers/lightnvm/pblk-gc.c > > +++ b/drivers/lightnvm/pblk-gc.c > > @@ -361,8 +361,13 @@ static int pblk_gc_read(struct pblk *pblk) > > > > pblk_gc_kick(pblk); > > > > - if (pblk_gc_line(pblk, line)) > > + if (pblk_gc_line(pblk, line)) { > > pblk_err(pblk, "failed to GC line %d\n", line->id); > > + /* rollback */ > > + spin_lock(&gc->r_lock); > > + list_add_tail(&line->list, &gc->r_list); > > + spin_unlock(&gc->r_lock); > > + } > > > > return 0; > > } > > -- > > 2.17.1 > > Looks good to me. > > Reviewed-by: Javier González <javier@xxxxxxxxxxx>