Dan Williams wrote: > Jonathan noticed that the target list setup is not unwound completely > upon error. Undo all the setup in the 'err_decrement:' exit path. > > Fixes: 27b3f8d13830 ("cxl/region: Program target lists") > Reported-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> Reviewed-by: Ira Weiny <ira.weiny@xxxxxxxxx> > Link: http://lore.kernel.org/r/20230208123031.00006990@xxxxxxxxxx > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> > --- > drivers/cxl/core/region.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c > index 040bbd39c81d..ae7d3adcd41a 100644 > --- a/drivers/cxl/core/region.c > +++ b/drivers/cxl/core/region.c > @@ -1347,6 +1347,8 @@ static int cxl_region_attach(struct cxl_region *cxlr, > > err_decrement: > p->nr_targets--; > + cxled->pos = -1; > + p->targets[pos] = NULL; > err: > for (iter = ep_port; !is_cxl_root(iter); > iter = to_cxl_port(iter->dev.parent)) > >