mrc0mmand / rpms / lvm2

Forked from rpms/lvm2 3 years ago
Clone

Blame SOURCES/lvm2-2_02_172-libdm-initialization-of-reused-struct.patch

08425f
 WHATS_NEW_DM              |  1 +
08425f
 libdm/ioctl/libdm-iface.c | 10 +++++++++-
08425f
 2 files changed, 10 insertions(+), 1 deletion(-)
08425f
08425f
diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
08425f
index 581cd42..bf08130 100644
08425f
--- a/WHATS_NEW_DM
08425f
+++ b/WHATS_NEW_DM
08425f
@@ -1,5 +1,6 @@
08425f
 Version 1.02.141 - 
08425f
 ===============================
08425f
+  Fix reusing of dm_task structure for status reading (used by dmeventd).
08425f
   dm_get_status_raid() handle better some incosistent md statuses.
08425f
   Accept truncated files in calls to dm_stats_update_regions_from_fd().
08425f
   Restore Warning by 5% increment when thin-pool is over 80% (1.02.138).
08425f
diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c
08425f
index cb3e8dc..65e75f6 100644
08425f
--- a/libdm/ioctl/libdm-iface.c
08425f
+++ b/libdm/ioctl/libdm-iface.c
08425f
@@ -467,7 +467,7 @@ static void _dm_zfree_dmi(struct dm_ioctl *dmi)
08425f
 	}
08425f
 }
08425f
 
08425f
-void dm_task_destroy(struct dm_task *dmt)
08425f
+static void _dm_task_free_targets(struct dm_task *dmt)
08425f
 {
08425f
 	struct target *t, *n;
08425f
 
08425f
@@ -478,6 +478,12 @@ void dm_task_destroy(struct dm_task *dmt)
08425f
 		dm_free(t);
08425f
 	}
08425f
 
08425f
+	dmt->head = dmt->tail = NULL;
08425f
+}
08425f
+
08425f
+void dm_task_destroy(struct dm_task *dmt)
08425f
+{
08425f
+	_dm_task_free_targets(dmt);
08425f
 	_dm_zfree_dmi(dmt->dmi.v4);
08425f
 	dm_free(dmt->dev_name);
08425f
 	dm_free(dmt->mangled_dev_name);
08425f
@@ -652,6 +658,8 @@ static int _unmarshal_status(struct dm_task *dmt, struct dm_ioctl *dmi)
08425f
 	uint32_t i;
08425f
 	struct dm_target_spec *spec;
08425f
 
08425f
+	_dm_task_free_targets(dmt);
08425f
+
08425f
 	for (i = 0; i < dmi->target_count; i++) {
08425f
 		spec = (struct dm_target_spec *) outptr;
08425f
 		if (!dm_task_add_target(dmt, spec->sector_start,
08425f
-- 
08425f
1.8.3.1
08425f