On 2020/8/10 22:34, Martin Wilck wrote: > Hi Liu, > > thanks again for your valuable contributions and meticulous code > review. I've added your patches in my upstream-queue branch now: > > https://github.com/openSUSE/multipath-tools/commits/upstream-queue > > Not applied yet: > > - libmultipath: free pp if store_path fails in disassemble_map: > As noted before, this will be merged with my series for > disassemble_map(). > - libmultipath: fix a memory leak in set_ble_device: > Please fix minor issues I mentioned > - vector: return null when realloc fails in vector_alloc_slot func > Needs improvement > > Please double-check if I've missed anything. > > Next time, please send your patches as a series. That makes it > much easier for others to make sure they don't miss any. > And please, don't add "" explicitly in your email > subject, mailman will take care of that. > > Regards > Martin > Thanks for your advise. I have checked recent patches. The following patch may be missed. - libmultipath: free pgp if add_pathgroup fails in disassemble_map func >From e43d45a4ff838cab845bc5b5834d24743192eb75 Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx> Date: Wed, 22 Jul 2020 14:31:15 +0800 Subject: [PATCH] libmultipath: free pgp if add_pathgroup fails in disassemble_map 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. Signed-off-by: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx> Signed-off-by: lixiaokeng <lixiaokeng@xxxxxxxxxx> Reviewed-by: Benjamin Marzinski <bmarzins@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