[PATCH 1/2] util: mdev: Use a local variable instead of an invalid pointer reference

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



virMediatedDeviceListAdd calls VIR_APPEND_ELEMENT which normally clears
the element to be added, thus the pointer must not be used afterwards,
but because the pointer here is passed by value, what gets cleared is
a copy of the original pointer that got created on the stack
automatically when calling the function. The fact that it works now is
just a coincidence and a bug in virMediatedDeviceListAdd that needs to
be fixed in a separate commit. Therefore, use a local variable to hold
data, rather than accessing the pointer later.

Signed-off-by: Erik Skultety <eskultet@xxxxxxxxxx>
---
 src/util/virmdev.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/util/virmdev.c b/src/util/virmdev.c
index 2a1ade739..c1499d238 100644
--- a/src/util/virmdev.c
+++ b/src/util/virmdev.c
@@ -447,20 +447,21 @@ virMediatedDeviceListMarkDevices(virMediatedDeviceListPtr dst,
     virObjectLock(dst);
     for (i = 0; i < count; i++) {
         virMediatedDevicePtr mdev = virMediatedDeviceListGet(src, i);
+        const char *mdev_path = mdev->path;
 
         if (virMediatedDeviceIsUsed(mdev, dst) ||
             virMediatedDeviceSetUsedBy(mdev, drvname, domname) < 0)
             goto cleanup;
 
         /* Copy mdev references to the driver list:
-         * - caller is responsible for NOT freeing devices in @list on success
+         * - caller is responsible for NOT freeing devices in @src on success
          * - we're responsible for performing a rollback on failure
          */
         if (virMediatedDeviceListAdd(dst, mdev) < 0)
             goto rollback;
 
         VIR_DEBUG("'%s' added to list of active mediated devices used by '%s'",
-                  mdev->path, domname);
+                  mdev_path, domname);
     }
 
     ret = 0;
-- 
2.12.2

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux