[lvm-devel][PATCH] Fix segfault when using vgsplit in stacked environment

Milan Broz mbroz at redhat.com
Mon Feb 9 12:24:18 UTC 2009


Peter Rajnoha wrote:
> diff --git a/lib/activate/activate.c b/lib/activate/activate.c
> index 2bc1db7..4ffd7bb 100644
> --- a/lib/activate/activate.c
> +++ b/lib/activate/activate.c
> @@ -1105,6 +1105,9 @@ int pv_uses_vg(struct physical_volume *pv,
>   	if (!activation())
>   		return 0;
> 
> +	if (!pv->dev || !pv->dev->dev)
> +		return 1;
> +

(answering myself - why "return 1". the function name is misleading for me...)
/*
 * Does PV use VG somewhere in its construction?
 * Returns 1 on failure.
 */
int pv_uses_vg(struct physical_volume *pv,
	       struct volume_group *vg)



Please add something like this to cover it by testsuite
(best add it to already existing vgsplit tests):

. ./test-utils.sh

aux prepare_devs 3

pvcreate $devs
vgcreate $vg1 $dev1 $dev2
lvcreate -n $lv1 -l 100%FREE $vg1

#top VG
pvcreate $G_dev_/$vg1/$lv1
vgcreate $vg $G_dev_/$vg1/$lv1 $dev3

vgchange -a n $vg
vgchange -a n $vg1

# this should fail but not segfault
not vgsplit $vg $vg1 $dev3


Acked-by: Milan Broz <mbroz at redhat.com>
Tested-by: Milan Broz <mbroz at redhat.com>

Milan
--
mbroz at redhat.com




More information about the lvm-devel mailing list