]> sourceware.org Git - lvm2.git/commitdiff
cov: fix memleak for duplicate device
authorZdenek Kabelac <zkabelac@redhat.com>
Thu, 14 Nov 2019 16:08:20 +0000 (17:08 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Thu, 14 Nov 2019 17:06:42 +0000 (18:06 +0100)
For  dev_in_device_list() != 0 allocated  'devl' was
actually leaking - so instead allocate 'devl' only
when !dev_in_device_list() and indent code around.

lib/cache/lvmcache.c

index 99818deb629d981d24b1d37aa357070a3a39f926..25d110d70289a3fe456b9962b470dc3702601a32 100644 (file)
@@ -1952,24 +1952,25 @@ struct lvmcache_info *lvmcache_add(struct labeller *labeller,
 
                        strncpy(dev->pvid, pvid_s, sizeof(dev->pvid));
 
-                       /*
-                        * Keep the existing PV/dev in lvmcache, and save the
-                        * new duplicate in the list of duplicates.  After
-                        * scanning is complete, compare the duplicate devs
-                        * with those in lvmcache to check if one of the
-                        * duplicates is preferred and if so switch lvmcache to
-                        * use it.
-                        */
-
-                       if (!(devl = zalloc(sizeof(*devl))))
-                               return_NULL;
-                       devl->dev = dev;
-
                        /* shouldn't happen */
                        if (dev_in_device_list(dev, &_initial_duplicates))
                                log_debug_cache("Initial duplicate already in list %s", dev_name(dev));
-                       else
+                       else {
+                               /*
+                                * Keep the existing PV/dev in lvmcache, and save the
+                                * new duplicate in the list of duplicates.  After
+                                * scanning is complete, compare the duplicate devs
+                                * with those in lvmcache to check if one of the
+                                * duplicates is preferred and if so switch lvmcache to
+                                * use it.
+                                */
+
+                               if (!(devl = zalloc(sizeof(*devl))))
+                                       return_NULL;
+                               devl->dev = dev;
+
                                dm_list_add(&_initial_duplicates, &devl->list);
+                       }
 
                        if (is_duplicate)
                                *is_duplicate = 1;
This page took 0.041699 seconds and 5 git commands to generate.