[lvm-devel] [PATCH 1/4] pvmove: check return value of top_level_lv_name() in _set_up_pvmove_lv

Wu Guanghao wuguanghao3 at huawei.com
Fri Sep 11 09:40:09 UTC 2020


The return value of top_level_lv_name may be NULL, so we should
check return value of top_level_lv_name before calling
strcmp(lv->name, top_level_lv_name(vg, lv_name)).

Signed-off-by: Wu Guanghao <wuguanghao3 at huawei.com>
Signed-off-by: Zhiqiang Liu <liuzhiqiang26 at huawei.com>
---
 tools/pvmove.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/pvmove.c b/tools/pvmove.c
index cc512b9de..3101de1df 100644
--- a/tools/pvmove.c
+++ b/tools/pvmove.c
@@ -326,6 +326,7 @@ static struct logical_volume *_set_up_pvmove_lv(struct cmd_context *cmd,
 	int lv_skipped = 0;
 	int needs_exclusive = *exclusive;
 	const struct logical_volume *holder;
+	const char *new_lv_name;

 	/* FIXME Cope with non-contiguous => splitting existing segments */
 	if (!(lv_mirr = lv_create_empty("pvmove%d", NULL,
@@ -363,7 +364,11 @@ static struct logical_volume *_set_up_pvmove_lv(struct cmd_context *cmd,
 		if (lv == lv_mirr)
 			continue;

-		if (lv_name && strcmp(lv->name, top_level_lv_name(vg, lv_name)))
+		new_lv_name = top_level_lv_name(vg, lv_name);
+		if (!new_lv_name)
+			return NULL;
+
+		if (lv_name && strcmp(lv->name, new_lv_name))
 			continue;

 		if (!lv_is_on_pvs(lv, source_pvl))
-- 




More information about the lvm-devel mailing list