Since the @def is consumed by the assignment function, let's pass by
reference instead of value and really consume it.
Signed-off-by: John Ferlan
---
src/conf/virnodedeviceobj.c| 8
src/conf/virnodedeviceobj.h| 2 +-
src/node_device/node_device_hal.c | 2 +-
src/node_device/node_device_udev.c | 8 +++-
src/test/test_driver.c | 5 ++---
5 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c
index a7e51ef..1648b33 100644
--- a/src/conf/virnodedeviceobj.c
+++ b/src/conf/virnodedeviceobj.c
@@ -268,13 +268,13 @@ virNodeDeviceObjListFree(virNodeDeviceObjListPtr devs)
virNodeDeviceObjPtr
virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs,
- virNodeDeviceDefPtr def)
+ virNodeDeviceDefPtr *def)
{
virNodeDeviceObjPtr obj;
-if ((obj = virNodeDeviceObjFindByName(devs, def->name))) {
+if ((obj = virNodeDeviceObjFindByName(devs, (*def)->name))) {
virNodeDeviceDefFree(obj->def);
-obj->def = def;
+VIR_STEAL_PTR(obj->def, *def);
return obj;
}
@@ -294,7 +294,7 @@ virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs,
virNodeDeviceObjFree(obj);
return NULL;
}
-obj->def = def;
+VIR_STEAL_PTR(obj->def, *def);
return obj;
diff --git a/src/conf/virnodedeviceobj.h b/src/conf/virnodedeviceobj.h
index 135a424..49c28e7 100644
--- a/src/conf/virnodedeviceobj.h
+++ b/src/conf/virnodedeviceobj.h
@@ -53,7 +53,7 @@ virNodeDeviceObjFindBySysfsPath(virNodeDeviceObjListPtr devs,
virNodeDeviceObjPtr
virNodeDeviceObjAssignDef(virNodeDeviceObjListPtr devs,
- virNodeDeviceDefPtr def);
+ virNodeDeviceDefPtr *def);
void
virNodeDeviceObjRemove(virNodeDeviceObjListPtr devs,
diff --git a/src/node_device/node_device_hal.c
b/src/node_device/node_device_hal.c
index e9031ea..2d996a9 100644
--- a/src/node_device/node_device_hal.c
+++ b/src/node_device/node_device_hal.c
@@ -482,7 +482,7 @@ dev_create(const char *udi)
/* Some devices don't have a path in sysfs, so ignore failure */
(void)get_str_prop(ctx, udi, "linux.sysfs_path", );
-if (!(obj = virNodeDeviceObjAssignDef(>devs, def))) {
+if (!(obj = virNodeDeviceObjAssignDef(>devs, ))) {
VIR_FREE(devicePath);
goto failure;
}
diff --git a/src/node_device/node_device_udev.c
b/src/node_device/node_device_udev.c
index 83a8fcc..0250aab 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1395,7 +1395,7 @@ udevAddOneDevice(struct udev_device *device)
/* If this is a device change, the old definition will be freed
* and the current definition will take its place. */
-if (!(obj = virNodeDeviceObjAssignDef(>devs, def)))
+if (!(obj = virNodeDeviceObjAssignDef(>devs, )))
goto cleanup;
objdef = virNodeDeviceObjGetDef(obj);
@@ -1685,8 +1685,7 @@ udevSetupSystemDev(void)
udevGetDMIData(>caps->data.system);
#endif
-obj = virNodeDeviceObjAssignDef(>devs, def);
-if (obj == NULL)
+if (!(obj = virNodeDeviceObjAssignDef(>devs, )))
goto cleanup;
virNodeDeviceObjUnlock(obj);
@@ -1694,8 +1693,7 @@ udevSetupSystemDev(void)
ret = 0;
cleanup:
-if (ret == -1)
-virNodeDeviceDefFree(def);
+virNodeDeviceDefFree(def);
return ret;
}
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 206fdf9..84ff1de 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -1168,7 +1168,7 @@ testParseNodedevs(testDriverPtr privconn,
if (!def)
goto error;
-if (!(obj = virNodeDeviceObjAssignDef(>devs, def))) {
+if (!(obj = virNodeDeviceObjAssignDef(>devs, ))) {
virNodeDeviceDefFree(def);
goto error;
}
@@ -5491,9 +5491,8 @@ testNodeDeviceMockCreateVport(testDriverPtr driver,
caps = caps->next;
}
-if (!(obj = virNodeDeviceObjAssignDef(>devs, def)))
+if (!(obj = virNodeDeviceObjAssignDef(>devs, )))
goto cleanup;
-def = NULL;
objdef = virNodeDeviceObjGetDef(obj);
event = virNodeDeviceEventLifecycleNew(objdef->name,
--
2.9.4
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list