virNodeDeviceObjListPtr devs; /* currently-known devices */
void *privateData; /* driver-specific private data */
+ bool privileged; /* whether we run in privileged mode */
/* Immutable pointer, self-locking APIs */
virObjectEventStatePtr nodeDeviceEventState;
struct _udevPrivate {
struct udev_monitor *udev_monitor;
int watch;
- bool privileged;
};
virNodeDevCapPCIDevPtr pci_dev = &def->caps->data.pci_dev;
virPCIEDeviceInfoPtr pci_express = NULL;
virPCIDevicePtr pciDev = NULL;
- udevPrivate *priv = driver->privateData;
int ret = -1;
char *p;
+ bool privileged;
+
+ nodeDeviceLock();
+ privileged = driver->privileged;
+ nodeDeviceUnlock();
if (udevGetUintProperty(device, "PCI_CLASS", &pci_dev->class, 16) < 0)
goto cleanup;
goto cleanup;
/* We need to be root to read PCI device configs */
- if (priv->privileged) {
+ if (privileged) {
if (virPCIGetHeaderType(pciDev, &pci_dev->hdrType) < 0)
goto cleanup;
return -1;
priv->watch = -1;
- priv->privileged = privileged;
if (VIR_ALLOC(driver) < 0) {
VIR_FREE(priv);
return -1;
}
+ driver->privileged = privileged;
driver->privateData = priv;
nodeDeviceLock();