lvm2/0016-toollib-fix-segfault-when-handling-selection-with-hi.patch
volcanodragon 8f174c9a91 backport some bugfix patches from upstream
(cherry picked from commit 21096c26e621dfa9d4ca0cafc016a2f1c7df6bf0)
2022-12-19 16:30:27 +08:00

48 lines
1.7 KiB
Diff

From 7ec0726ce331a4dc1ab5dc5e1b9ae503e5d758da Mon Sep 17 00:00:00 2001
From: Peter Rajnoha <prajnoha@redhat.com>
Date: Thu, 5 May 2022 11:02:32 +0200
Subject: [PATCH] toollib: fix segfault when handling selection with historical
LVs
When processing historical LVs inside process_each_lv_in_vg for
selection, we need to use dummy "_historical_lv" for select_match_lv.
This is because a historical LV is not an actual LV, but only a tiny
representation with subset of original properties that we recorded
(name, uuid...).
To use the same processing functions we use for full-fledged non-historical
LVs, we need to use the prefilled "_historical_lv" structure which has all
the other missing properties hard-coded.
Conflict: remove WHAT_NEW
---
tools/toollib.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/toollib.c b/tools/toollib.c
index 545407c2f..d77092d89 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -3215,13 +3215,14 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
process_lv = 1;
}
- process_lv = process_lv && select_match_lv(cmd, handle, vg, lvl->lv) && _select_matches(handle);
+ _historical_lv.this_glv = glvl->glv;
+ _historical_lv.name = glvl->glv->historical->name;
+
+ process_lv = process_lv && select_match_lv(cmd, handle, vg, &_historical_lv) && _select_matches(handle);
if (!process_lv)
continue;
- _historical_lv.this_glv = glvl->glv;
- _historical_lv.name = glvl->glv->historical->name;
log_very_verbose("Processing historical LV %s in VG %s.", glvl->glv->historical->name, vg->name);
ret = process_single_lv(cmd, &_historical_lv, handle);
--
2.33.0