]> sourceware.org Git - lvm2.git/commitdiff
Fix pvs segfault when pv mda attributes requested for not available PV.
authorMilan Broz <mbroz@redhat.com>
Fri, 6 Feb 2009 12:41:51 +0000 (12:41 +0000)
committerMilan Broz <mbroz@redhat.com>
Fri, 6 Feb 2009 12:41:51 +0000 (12:41 +0000)
WHATS_NEW
lib/report/report.c

index 5dcc462092feb091de43951acf1d4b60ec8e8c9b..a106604c0af13a8856d0eb9c4e3f9a9020a0f6d8 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.45 - 
 ===================================
+  Fix pvs segfault when pv mda attributes requested for not available PV.
   Add support for ext4 resize in fsadm
   Move locking_type reading inside init_locking().
   Rename get_vgs() to get_vgnames() and clarify related error messages.
index 8439b2b095a2840f7ca7d0e15ad7fb14add03a59..729ac489940b7a272111c8778c9954de5042a610 100644 (file)
@@ -868,15 +868,14 @@ static int _pvmdafree_disp(struct dm_report *rh, struct dm_pool *mem,
        const char *pvid = (const char *)(&((struct id *) data)->uuid);
        struct metadata_area *mda;
 
-       info = info_from_pvid(pvid, 0);
-
-       dm_list_iterate_items(mda, &info->mdas) {
-               if (!mda->ops->mda_free_sectors)
-                       continue;
-               mda_free = mda->ops->mda_free_sectors(mda);
-               if (mda_free < freespace)
-                       freespace = mda_free;
-       }
+       if ((info = info_from_pvid(pvid, 0)))
+               dm_list_iterate_items(mda, &info->mdas) {
+                       if (!mda->ops->mda_free_sectors)
+                               continue;
+                       mda_free = mda->ops->mda_free_sectors(mda);
+                       if (mda_free < freespace)
+                               freespace = mda_free;
+               }
 
        if (freespace == UINT64_MAX)
                freespace = UINT64_C(0);
@@ -908,13 +907,12 @@ static int _pvmdasize_disp(struct dm_report *rh, struct dm_pool *mem,
                           const void *data, void *private)
 {
        struct lvmcache_info *info;
-       uint64_t min_mda_size;
+       uint64_t min_mda_size = 0;
        const char *pvid = (const char *)(&((struct id *) data)->uuid);
 
-       info = info_from_pvid(pvid, 0);
-
        /* PVs could have 2 mdas of different sizes (rounding effect) */
-       min_mda_size = _find_min_mda_size(&info->mdas);
+       if ((info = info_from_pvid(pvid, 0)))
+               min_mda_size = _find_min_mda_size(&info->mdas);
 
        return _size64_disp(rh, mem, field, &min_mda_size, private);
 }
This page took 0.044524 seconds and 5 git commands to generate.