On Wed, Jul 22, 2020 at 04:36:04PM +0800, Zhiqiang Liu wrote: > In disassemble_map func, pgp will be added to mpp->pg by calling > add_pathgroup after allocing a pathgroup (pgp) successfully. However, > if add_pathgroup fails, the pgp is actually not inserted into mpp->pg. > So, calling free_pgvec(mpp->pg) cannot free the pgp, then memory leak > problem occurs. > > disassemble_map: > -> pgp = alloc_pathgroup() > -> if add_pathgroup(mpp, pgp) fails > -> goto out > out: > free_pgvec(mpp->pg, KEEP_PATHS); > > Here, we will call free_pathgroup(pgp) before going to out tag. > Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > Signed-off-by: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx> > Signed-off-by: lixiaokeng <lixiaokeng@xxxxxxxxxx> > --- > libmultipath/dmparser.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c > index ac13ec06..6225838b 100644 > --- a/libmultipath/dmparser.c > +++ b/libmultipath/dmparser.c > @@ -268,8 +268,10 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp, > if (!pgp) > goto out; > > - if (add_pathgroup(mpp, pgp)) > + if (add_pathgroup(mpp, pgp)) { > + free_pathgroup(pgp, KEEP_PATHS); > goto out; > + } > > p += get_word(p, &word); > > -- > 2.24.0.windows.2 > -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel