[lvm-devel] master - lvmetad: Do not try to lock a NULL vgid.
Petr Rockai
mornfall at fedoraproject.org
Wed Oct 9 12:58:10 UTC 2013
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=bcb44281b7c379ed3310b5f9a16ce380d84f31dc
Commit: bcb44281b7c379ed3310b5f9a16ce380d84f31dc
Parent: 17f3b8280b8ade397a6a4a8fd82ba7dd7d0e1d1b
Author: Petr Rockai <prockai at redhat.com>
AuthorDate: Wed Oct 9 14:53:58 2013 +0200
Committer: Petr Rockai <prockai at redhat.com>
CommitterDate: Wed Oct 9 14:56:06 2013 +0200
lvmetad: Do not try to lock a NULL vgid.
---
daemons/lvmetad/lvmetad-core.c | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index b7a3023..ed44def 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -796,9 +796,9 @@ static response pv_gone(lvmetad_state *s, request r)
pvmeta = dm_hash_lookup(s->pvid_to_pvmeta, pvid);
pvid_old = dm_hash_lookup_binary(s->device_to_pvid, &device, sizeof(device));
- char *vgid = dm_strdup(dm_hash_lookup(s->pvid_to_vgid, pvid));
+ const char *vgid = dm_hash_lookup(s->pvid_to_vgid, pvid);
- if (!vgid) {
+ if (vgid && !(vgid = dm_strdup(vgid))) {
unlock_pvid_to_pvmeta(s);
return reply_fail("out of memory");
}
@@ -807,11 +807,12 @@ static response pv_gone(lvmetad_state *s, request r)
dm_hash_remove(s->pvid_to_pvmeta, pvid);
unlock_pvid_to_pvmeta(s);
- lock_vg(s, vgid);
- vg_remove_if_missing(s, vgid, 1);
- unlock_vg(s, vgid);
-
- dm_free(vgid);
+ if (vgid) {
+ lock_vg(s, vgid);
+ vg_remove_if_missing(s, vgid, 1);
+ unlock_vg(s, vgid);
+ dm_free(vgid);
+ }
if (pvid_old)
dm_free(pvid_old);
More information about the lvm-devel
mailing list