xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 10 21:38:23 UTC 2024


 hw/xfree86/fbdevhw/fbdevhw.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit 728b54528d37ffa27b07c9b181c5ed8d2d359379
Author: Tj <tj.iam.tj at proton.me>
Date:   Fri Jul 19 19:50:56 2024 +0200

    xfree86: fbdevhw: fix pci detection on recent Linux
    
    Linux kernel v6.9 has changed the symlink to point to the parent device. This
    breaks fbdev_open() detection logic. Change it to use the subsystem symlink
    instead which will remain stable.
    
    Kernel v6.8:
    
    [    14.067] (II) fbdev_open() sysfs_path=/sys/class/graphics/fb0
    [    14.067] (II) fbdev_open() buf=../../devices/platform/vesa-framebuffer.0/graphics/fb0
    
    Kernel v6.9:
    
    [    15.609] (II) fbdev_open() sysfs_path=/sys/class/graphics/fb0
    [    15.609] (II) fbdev_open() buf=../../devices/pci0000:00/0000:00:01.0/vesa-framebuffer.0/graphics/fb0
    
    Originally found in automated Debian ISO QA testing [0] and confirmed in Linux [1].
    
    Tested on kernels v6.9.7 and v6.8.12
    
    [0] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1075713
    [1] https://lore.kernel.org/lkml/lLyvPFC_APGHNfyGNHRpQy5izBikkaTPOpHooZIT3fFAoJPquSI31ZMueA99XTdr8ysir3X7O7IMdc6za-0m79vr_claeparHhoRouVgHOI=@proton.me/
    
    Fixes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1714
    Signed-off-by: Tj <tj.iam.tj at proton.me>
    Reviewed-by: Thomas Zimmermann <tzimmermann at suse.de>
    Reviewed-by: Enrico Weigelt, metux IT consult <info at metux.net>
    Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1612>

diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index 1e39c8146..92cac3f4a 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -378,9 +378,9 @@ fbdev_open(int scrnIndex, const char *dev, char **namep)
             node++;
         }
 
-        if (asprintf(&sysfs_path, "/sys/class/graphics/%s", node) < 0 ||
+        if (asprintf(&sysfs_path, "/sys/class/graphics/%s/device/subsystem", node) < 0 ||
             readlink(sysfs_path, buf, sizeof(buf) - 1) < 0 ||
-            strstr(buf, "devices/pci")) {
+            strstr(buf, "bus/pci")) {
             free(sysfs_path);
             close(fd);
             return -1;


More information about the xorg-commit mailing list