From 5de9b50259892402db4147c2dadc2c736ba26faf Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Mon, 30 Jun 2014 15:18:23 +0200 Subject: [PATCH] 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 --- src/node_device/node_device_udev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 50bb952bcb..8a2e5fffa3 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; -- 2.47.2