forked from pool/xorg-x11-server
- Added xorg-xserver-e89edec497ba.patch to fix incompatible pointer type error with GCC 14. If the request is OK, please forward it to Factory soon too so that we can switch the default compiler. Thanks! OBS-URL: https://build.opensuse.org/request/show/1189636 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=891
46 lines
1.8 KiB
Diff
46 lines
1.8 KiB
Diff
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=3D1075713
|
|
[1] https://lore.kernel.org/lkml/lLyvPFC_APGHNfyGNHRpQy5izBikkaTPOpHooZIT3f=
|
|
FAoJPquSI31ZMueA99XTdr8ysir3X7O7IMdc6za-0m79vr_claeparHhoRouVgHOI=3D@proton=
|
|
.me/
|
|
|
|
Fixes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1714
|
|
Signed-off-by: Tj <tj.iam.tj@proton.me>
|
|
---
|
|
hw/xfree86/fbdevhw/fbdevhw.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
Index: xorg-server-21.1.12/hw/xfree86/fbdevhw/fbdevhw.c
|
|
===================================================================
|
|
--- xorg-server-21.1.12.orig/hw/xfree86/fbdevhw/fbdevhw.c
|
|
+++ xorg-server-21.1.12/hw/xfree86/fbdevhw/fbdevhw.c
|
|
@@ -335,9 +335,9 @@ fbdev_open(int scrnIndex, const char *de
|
|
char *sysfs_path = NULL;
|
|
char *node = strrchr(dev, '/') + 1;
|
|
|
|
- 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;
|