From: Ján Tomko Date: Mon, 30 Jun 2014 13:18:23 +0000 (+0200) Subject: Only detect PCI Express devices as root in udev nodedev driver X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=5de9b50259892402db4147c2dadc2c736ba26faf;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git Only detect PCI Express devices as root in udev nodedev driver This stops the error message spam when running unprivileged libvirtd: 2014-06-30 12:38:47.990+0000: 631: error : virPCIDeviceConfigOpen:300 : Failed to open config space file '/sys/bus/pci/devices/0000:00:00.0/config': Permission denied Reported by Daniel Berrange: https://www.redhat.com/archives/libvir-list/2014-June/msg01082.html --- diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 50bb952bc..8a2e5fffa 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -429,6 +429,7 @@ static int udevProcessPCI(struct udev_device *device, virPCIDeviceAddress addr; virPCIEDeviceInfoPtr pci_express = NULL; virPCIDevicePtr pciDev = NULL; + udevPrivate *priv = driverState->privateData; int tmpGroup, ret = -1; char *p; int rc; @@ -544,7 +545,8 @@ static int udevProcessPCI(struct udev_device *device, data->pci_dev.function))) goto out; - if (virPCIDeviceIsPCIExpress(pciDev) > 0) { + /* We need to be root to read PCI device configs */ + if (priv->privileged && virPCIDeviceIsPCIExpress(pciDev) > 0) { if (VIR_ALLOC(pci_express) < 0) goto out;