Thanks for your review. On 2020/7/23 4:48, Benjamin Marzinski wrote: > 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