From: Jim Meyering Date: Fri, 13 Jun 2008 12:15:55 +0000 (+0000) Subject: Don't deref uninitialized log_lv upon failed mirror addition. X-Git-Tag: v2_02_91~3579 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=ac27ef25936004c74a93db6a2aa9d0e5c6b102ea;p=lvm2.git Don't deref uninitialized log_lv upon failed mirror addition. * mirror.c (add_mirror_images): Ensure that log_lv is initialized. --- diff --git a/WHATS_NEW b/WHATS_NEW index c609cef1b..4a8bb88f6 100644 --- 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. diff --git a/lib/metadata/mirror.c b/lib/metadata/mirror.c index f97dac1b4..1e49d283c 100644 --- a/lib/metadata/mirror.c +++ b/lib/metadata/mirror.c @@ -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.");