In disassemble_status func, for dealing with selector args,
word is allocated by get_word func. However, word is not freed.
Then a memory leak occurs.

Here, we call FREE(word) to free word.

Fixes: 35ad40b4 ('leastpending IO loadbalancing is not displayed properly')
Signed-off-by: Zhiqiang Liu <[email protected]>
Signed-off-by: lixiaokeng <[email protected]>
Reviewed-by: Benjamin Marzinski <[email protected]>
---
 libmultipath/dmparser.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c
index 3dc77242..33f47405 100644
--- a/libmultipath/dmparser.c
+++ b/libmultipath/dmparser.c
@@ -580,10 +580,15 @@ int disassemble_status(char *params, struct multipath 
*mpp)
                                if (!strncmp(mpp->selector,
                                             "least-pending", 13)) {
                                        p += get_word(p, &word);
+
+                                       if (!word)
+                                               return 1;
+
                                        if (sscanf(word,"%d:*d",
                                                   &def_minio) == 1 &&
                                            def_minio != mpp->minio)
                                                        mpp->minio = def_minio;
+                                       FREE(word);
                                } else
                                        p += get_word(p, NULL);
                        }
-- 
2.24.0.windows.2


--
dm-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to