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. 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