]> sourceware.org Git - lvm2.git/commitdiff
Don't deref uninitialized log_lv upon failed mirror addition.
authorJim Meyering <jim@meyering.net>
Fri, 13 Jun 2008 12:15:55 +0000 (12:15 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 13 Jun 2008 12:15:55 +0000 (12:15 +0000)
* mirror.c (add_mirror_images): Ensure that log_lv is initialized.

WHATS_NEW
lib/metadata/mirror.c

index c609cef1bb6701364983ff70104a2a563b1d106f..4a8bb88f6412f706bb838e9bc54e1447eb6a214f 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,10 +1,11 @@
 Version 2.02.39 -
 ================================
+  Fix add_mirror_images not to dereference uninitialized log_lv upon failure.
   Don't call openlog for every debug line output by clvmd.
   Add --force to lvextend and lvresize.
   Fix vgchange to not activate mirror leg and log volumes directly.
   Fix test directory clean up in make distclean.
+
 Version 2.02.38 - 11th June 2008
 ================================
   Fix tracking of validity of PVs with no mdas in lvmcache.
index f97dac1b4fec692342730ba739446ea1db2e96b6..1e49d283c5c10d2de12ec77636ea6c42d86c3294 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2003-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
  *
  * This file is part of LVM2.
  *
@@ -1344,7 +1344,8 @@ int add_mirror_images(struct cmd_context *cmd, struct logical_volume *lv,
        struct alloc_handle *ah;
        const struct segment_type *segtype;
        struct list *parallel_areas;
-       struct logical_volume **img_lvs, *log_lv;
+       struct logical_volume **img_lvs;
+       struct logical_volume *log_lv = NULL;
 
        if (stripes > 1) {
                log_error("stripes > 1 is not supported");
@@ -1416,8 +1417,8 @@ int add_mirror_images(struct cmd_context *cmd, struct logical_volume *lv,
        return 1;
 
   out_remove_log:
-       if (!lv_remove(log_lv) || !vg_write(log_lv->vg) ||
-           (backup(log_lv->vg), !vg_commit(log_lv->vg)))
+       if (log_lv && (!lv_remove(log_lv) || !vg_write(log_lv->vg) ||
+                      (backup(log_lv->vg), !vg_commit(log_lv->vg))))
                log_error("Manual intervention may be required to remove "
                          "abandoned log LV before retrying.");
 
This page took 0.047945 seconds and 5 git commands to generate.