diff --git a/0001-mustard-xfree86-Disable-the-PCI-probe-path.patch b/0001-mustard-xfree86-Disable-the-PCI-probe-path.patch new file mode 100644 index 0000000..0528cc6 --- /dev/null +++ b/0001-mustard-xfree86-Disable-the-PCI-probe-path.patch @@ -0,0 +1,83 @@ +From b3afd9ccefe156ab2dee993118fcdba40341f66e Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Fri, 1 Oct 2021 11:47:21 -0400 +Subject: [PATCH xserver] mustard: xfree86: Disable the PCI probe path + +RHEL 9 does not support userspace modesetting drivers for Xorg. Ideally +it would only support DRM drivers, but there are some fallback paths +(efifb mainly) that still require fbdev support. Since the primary use +of the PCI probe path is devices _without_ kernel support, we can safely +disable it. And indeed we want to, because there are some devices +(hyperv v1 e.g.) with both a platform and a PCI presentation, which the +PCI probe code fails to handle such that the server fails to start. + +Thus: we #if 0 out the PCI probe in xf86CallDriverProbe. + +It might be nice if the platform code knew about fbdev devices, but it +does not, and teaching it would be a large change for little benefit +given we do intend to sunset the fbdev path as well. Since the fbdev +path exists solely for cases where we have only the rudimentary firmare +framebuffer, we should only use it if _no_ platform driver is available. + +Thus: we only call the legacy probe method if xf86ProbeIgnorePrimary. + +Having done this, we need to go back into fbdevhw and undo fc78bcca: + + commit fc78bcca21e767697de6ad4d8e03b6728856f613 (merge-requests/38) + Author: Adam Jackson + Date: Wed Oct 10 14:09:11 2018 -0400 + + fbdevhw: Refuse to touch PCI devices on the fallback probe path + +Which was well intentioned, but given the above changes we know by the +time we're trying to probe fbdev we really do want it, either because of +the above fallback path or because xorg.conf asked for it. In either +case we shouldn't spuriously fail just because it happens to be PCI. + +Thus: We if (0) out the code added in fc78bcca. + +Any one of the above might be questionable upstream, hence the mustard +nature of this patch. +--- + hw/xfree86/common/xf86Bus.c | 4 ++-- + hw/xfree86/fbdevhw/fbdevhw.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c +index fd144dbe7a..844ce5a890 100644 +--- a/hw/xfree86/common/xf86Bus.c ++++ b/hw/xfree86/common/xf86Bus.c +@@ -84,7 +84,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) + } + #endif + +-#ifdef XSERVER_LIBPCIACCESS ++#if 0 + if (!foundScreen && (drv->PciProbe != NULL)) { + if (xf86DoConfigure && xf86DoConfigurePass1) { + assert(detect_only); +@@ -96,7 +96,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) + } + } + #endif +- if (!foundScreen && (drv->Probe != NULL)) { ++ if (!foundScreen && xf86ProbeIgnorePrimary && (drv->Probe != NULL)) { + xf86Msg(X_WARNING, "Falling back to old probe method for %s\n", + drv->driverName); + foundScreen = (*drv->Probe) (drv, (detect_only) ? PROBE_DETECT +diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c +index 3d8b92e669..171038f46d 100644 +--- a/hw/xfree86/fbdevhw/fbdevhw.c ++++ b/hw/xfree86/fbdevhw/fbdevhw.c +@@ -330,7 +330,7 @@ fbdev_open(int scrnIndex, const char *dev, char **namep) + } + + /* only touch non-PCI devices on this path */ +- { ++ if (0) { + char buf[PATH_MAX]; + char *sysfs_path = NULL; + char *node = strrchr(dev, '/') + 1; +-- +2.31.1 + diff --git a/0001-mustard-xfree86-Only-call-the-driver-s-platformProbe.patch b/0001-mustard-xfree86-Only-call-the-driver-s-platformProbe.patch deleted file mode 100644 index ae0c0b9..0000000 --- a/0001-mustard-xfree86-Only-call-the-driver-s-platformProbe.patch +++ /dev/null @@ -1,43 +0,0 @@ -From ab756b13392448201c106b7629c55f68af4d8ec5 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Fri, 1 Oct 2021 11:47:21 -0400 -Subject: [PATCH xserver] mustard: xfree86: Only call the driver's - platformProbe - -The code to detangle what's a PCI device and what's platform is... bad. -The PCI-specific initialization path should never be necessary these -days, and the ancient "just probe something" path should especially -never be necessary, so we can avoid a bunch of fragile code by simply -never calling into the non-platform probe paths and letting platform -handle everything. - -Among other things this fixes hypervdrm on v1 devices, which have both a -PCI and a platform presentation, in a way that would cause X to fail to -start. ---- - hw/xfree86/common/xf86Bus.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c -index fd144dbe7a..88e07dec40 100644 ---- a/hw/xfree86/common/xf86Bus.c -+++ b/hw/xfree86/common/xf86Bus.c -@@ -84,6 +84,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) - } - #endif - -+#if 0 - #ifdef XSERVER_LIBPCIACCESS - if (!foundScreen && (drv->PciProbe != NULL)) { - if (xf86DoConfigure && xf86DoConfigurePass1) { -@@ -102,6 +103,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) - foundScreen = (*drv->Probe) (drv, (detect_only) ? PROBE_DETECT - : PROBE_DEFAULT); - } -+#endif - - return foundScreen; - } --- -2.31.1 - diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 6e56348..55ba38d 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -42,7 +42,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.20.11 -Release: 7%{?gitdate:.%{gitdate}}%{?dist} +Release: 8%{?gitdate:.%{gitdate}}%{?dist} URL: http://www.x.org License: MIT @@ -92,8 +92,8 @@ Patch6: 0001-Fedora-hack-Make-the-suid-root-wrapper-always-start-.patch Patch7: 0001-xkb-Drop-check-for-XkbSetMapResizeTypes.patch # 1988922 - [Hyper-V]Installation failed with: 'x or window manager startup failed' when the VM was created with GEN1 - -Patch8: 0001-mustard-xfree86-Only-call-the-driver-s-platformProbe.patch +# 2029769 - fbdev Xorg driver no longer works as a fallback with unsupported hardware +Patch8: 0001-mustard-xfree86-Disable-the-PCI-probe-path.patch # Backports from current stable "server-1.20-branch": # @@ -529,6 +529,11 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete %changelog +* Wed Jan 26 2022 Adam Jackson - 1.20.11-8 +- Only disable the PCI-specific driver probe, since we do still want fallback + to fbdev to work. + Resolves: #2029769 + * Thu Jan 6 2022 Olivier Fourdan - 1.20.11-7 - CVE fix for: CVE-2021-4008 (#2030160), CVE-2021-4009 (#2030170), CVE-2021-4010 (#2030174), CVE-2021-4011 (#2030179)