[dm-devel] [PATCH v3 17/19] multipathd: fix memory leak on error in configure
Martin Wilck
mwilck at suse.com
Mon Oct 1 21:42:50 UTC 2018
On Fri, 2018-09-21 at 18:05 -0500, Benjamin Marzinski wrote:
> If configure fails after allocing mpvec, it must free it. Found by
> coverity.
>
> Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
Reviewed-by: Martin Wilck <mwilck at suse.com>
> ---
> multipathd/main.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/multipathd/main.c b/multipathd/main.c
> index 3c2fe7b..61ca455 100644
> --- a/multipathd/main.c
> +++ b/multipathd/main.c
> @@ -2277,7 +2277,7 @@ configure (struct vectors * vecs)
> ret = path_discovery(vecs->pathvec, DI_ALL);
> if (ret < 0) {
> condlog(0, "configure failed at path discovery");
> - return 1;
> + goto fail;
> }
>
> vector_foreach_slot (vecs->pathvec, pp, i){
> @@ -2294,7 +2294,7 @@ configure (struct vectors * vecs)
> }
> if (map_discovery(vecs)) {
> condlog(0, "configure failed at map discovery");
> - return 1;
> + goto fail;
> }
>
> /*
> @@ -2308,7 +2308,7 @@ configure (struct vectors * vecs)
> force_reload = FORCE_RELOAD_YES;
> if (ret) {
> condlog(0, "configure failed while coalescing paths");
> - return 1;
> + goto fail;
> }
>
> /*
> @@ -2317,7 +2317,7 @@ configure (struct vectors * vecs)
> */
> if (coalesce_maps(vecs, mpvec)) {
> condlog(0, "configure failed while coalescing maps");
> - return 1;
> + goto fail;
> }
>
> dm_lib_release();
> @@ -2353,6 +2353,10 @@ configure (struct vectors * vecs)
> i--;
> }
> return 0;
> +
> +fail:
> + vector_free(mpvec);
> + return 1;
> }
>
> int
--
Dr. Martin Wilck <mwilck at suse.com>, Tel. +49 (0)911 74053 2107
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
More information about the dm-devel
mailing list