xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 20 14:22:43 UTC 2019


 config/udev.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

New commits:
commit 9acff309434a8029bcce1b22530043459bb71791
Author: Adam Jackson <ajax at redhat.com>
Date:   Wed Jun 19 14:23:56 2019 -0400

    linux: Fix platform device PCI detection for complex bus topologies
    
    Suppose you're in a Hyper-V guest and are trying to use PCI passthrough.
    The ID_PATH that udev will construct for that looks something like
    "acpi-VMBUS:00-pci-b8c8:00:00.0", and obviously looking for "pci-" in
    the first four characters of that is going to not work.
    
    Instead, strstr. I suppose it's possible you could have _multiple_ PCI
    buses in the path, in which case you'd want strrstr, if that were a
    thing.

diff --git a/config/udev.c b/config/udev.c
index 314acba6c..6e11aa3b8 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -474,7 +474,7 @@ config_udev_odev_setup_attribs(struct udev_device *udev_device, const char *path
                                config_odev_probe_proc_ptr probe_callback)
 {
     struct OdevAttributes *attribs = config_odev_allocate_attributes();
-    const char *value;
+    const char *value, *str;
 
     attribs->path = XNFstrdup(path);
     attribs->syspath = XNFstrdup(syspath);
@@ -482,8 +482,8 @@ config_udev_odev_setup_attribs(struct udev_device *udev_device, const char *path
     attribs->minor = minor;
 
     value = udev_device_get_property_value(udev_device, "ID_PATH");
-    if (value && !strncmp(value, "pci-", 4)) {
-        attribs->busid = XNFstrdup(value);
+    if (value && (str = strstr(value, "pci-"))) {
+        attribs->busid = XNFstrdup(str);
         attribs->busid[3] = ':';
     }
 


More information about the xorg-commit mailing list