On Wed, Aug 12, 2020 at 01:34:04PM +0200, mwilck@xxxxxxxx wrote: > From: Martin Wilck <mwilck@xxxxxxxx> > > If free_paths is false, make sure no references to the dropped > multipath remain. Otherwise multipathd may crash later when > trying to access these. > Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > --- > libmultipath/structs.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/libmultipath/structs.c b/libmultipath/structs.c > index da898b7..d227ec0 100644 > --- a/libmultipath/structs.c > +++ b/libmultipath/structs.c > @@ -258,6 +258,21 @@ free_multipath (struct multipath * mpp, enum free_path_mode free_paths) > mpp->dmi = NULL; > } > > + if (!free_paths && mpp->pg) { > + struct pathgroup *pgp; > + struct path *pp; > + int i, j; > + > + /* > + * Make sure paths carry no reference to this mpp any more > + */ > + vector_foreach_slot(mpp->pg, pgp, i) { > + vector_foreach_slot(pgp->paths, pp, j) > + if (pp->mpp == mpp) > + pp->mpp = NULL; > + } > + } > + > free_pathvec(mpp->paths, free_paths); > free_pgvec(mpp->pg, free_paths); > FREE_PTR(mpp->mpcontext); > -- > 2.28.0 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel