[dm-devel] [PATCH v2 40/42] libmultipath: free_multipath(): remove mpp references
Benjamin Marzinski
bmarzins at redhat.com
Thu Aug 13 21:32:52 UTC 2020
On Wed, Aug 12, 2020 at 01:34:04PM +0200, mwilck at suse.com wrote:
> From: Martin Wilck <mwilck at suse.com>
>
> 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 at redhat.com>
> Signed-off-by: Martin Wilck <mwilck at suse.com>
> ---
> 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
More information about the dm-devel
mailing list