lvm2: fix segfault for snapshot

Backport <commit c46d4a745dc8c5cb4cfc0c94863e555387e9af75> from lvm2
upstream <https://git.fedorahosted.org/git/lvm2.git> to solve issue:
vgchange segfault in lv_is_merging_cow function.

Signed-off-by: Li Zhou <li.zhou@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Li Zhou
2015-05-26 10:59:23 +08:00
committed by Martin Jansa
parent 47ca7a8403
commit f7f2657dac
2 changed files with 31 additions and 1 deletions
+2 -1
View File
@@ -11,7 +11,8 @@ S = "${WORKDIR}/LVM2.${PV}"
SRC_URI = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${PV}.tgz \
file://0001-Replace-CPPFunction-with-rl_completion_func_t.patch \
file://mlock-ignore-vectors-gate_vma.patch \
file://lvm.conf"
file://lvm.conf \
file://0001-snapshot-check-snapshot-exists.patch"
PACKAGECONFIG ??= "readline"
PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
@@ -0,0 +1,29 @@
From c46d4a745dc8c5cb4cfc0c94863e555387e9af75 Mon Sep 17 00:00:00 2001
From: Zdenek Kabelac <zkabelac@redhat.com>
Date: Mon, 16 Jun 2014 12:41:30 +0200
Subject: [PATCH] snapshot: check snapshot exists
Return 0 if the LV is not even snapshot.
Upstream-Status: backport
Adapt the patch for backporting to an older version.
Signed-off-by: Li Zhou <li.zhou@windriver.com>
---
lib/metadata/snapshot_manip.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: LVM2.2.02.97/lib/metadata/snapshot_manip.c
===================================================================
--- LVM2.2.02.97.orig/lib/metadata/snapshot_manip.c
+++ LVM2.2.02.97/lib/metadata/snapshot_manip.c
@@ -68,8 +68,9 @@ struct lv_segment *find_merging_cow(cons
int lv_is_merging_cow(const struct logical_volume *snapshot)
{
+ struct lv_segment *snap_seg = find_cow(snapshot);
/* checks lv_segment's status to see if cow is merging */
- return (find_cow(snapshot)->status & MERGING) ? 1 : 0;
+ return (snap_seg && (snap_seg->status & MERGING)) ? 1 : 0;
}
/* Given a cow LV, return the snapshot lv_segment that uses it */