diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 4d3268f12e..f6d7692a3c 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -2158,8 +2158,8 @@ virNodeDeviceObjListExport(virConnectPtr conn, if ((!filter || filter(conn, devobj->def)) && virNodeDeviceMatch(devobj, flags)) { if (devices) { - if (!(device = virGetNodeDevice(conn, - devobj->def->name))) { + if (!(device = virGetNodeDevice(conn, devobj->def->name)) || + VIR_STRDUP(device->parent, devobj->def->parent) < 0) { virNodeDeviceObjUnlock(devobj); goto cleanup; } diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c index 5238e231de..4900e32227 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -261,7 +261,10 @@ nodeDeviceLookupByName(virConnectPtr conn, const char *name) if (virNodeDeviceLookupByNameEnsureACL(conn, obj->def) < 0) goto cleanup; - ret = virGetNodeDevice(conn, name); + if ((ret = virGetNodeDevice(conn, name))) { + if (VIR_STRDUP(ret->parent, obj->def->parent) < 0) + virObjectUnref(ret); + } cleanup: if (obj) @@ -302,7 +305,10 @@ nodeDeviceLookupSCSIHostByWWN(virConnectPtr conn, if (virNodeDeviceLookupSCSIHostByWWNEnsureACL(conn, obj->def) < 0) goto out; - dev = virGetNodeDevice(conn, obj->def->name); + if ((dev = virGetNodeDevice(conn, obj->def->name))) { + if (VIR_STRDUP(dev->parent, obj->def->parent) < 0) + virObjectUnref(dev); + } virNodeDeviceObjUnlock(obj); goto out; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 68202983a1..2f687e0e13 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -5450,7 +5450,10 @@ testNodeDeviceLookupByName(virConnectPtr conn, const char *name) goto cleanup; } - ret = virGetNodeDevice(conn, name); + if ((ret = virGetNodeDevice(conn, name))) { + if (VIR_STRDUP(ret->parent, obj->def->parent) < 0) + virObjectUnref(ret); + } cleanup: if (obj) @@ -5648,6 +5651,7 @@ testNodeDeviceCreateXML(virConnectPtr conn, 0); dev = virGetNodeDevice(conn, def->name); + ignore_value(VIR_STRDUP(dev->parent, def->parent)); def = NULL; cleanup: testDriverUnlock(driver);