import xorg-x11-server-1.20.11-10.el9
This commit is contained in:
parent
c6dd1ce680
commit
f6217be6e1
|
@ -0,0 +1,49 @@
|
||||||
|
From 88f0787f93f097a125a0aa156eb9a5628adfc2c2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alex Goins <agoins@nvidia.com>
|
||||||
|
Date: Thu, 12 Dec 2019 20:18:53 -0600
|
||||||
|
Subject: [PATCH xserver] modesetting: Fix msSharePixmapBacking Segfault
|
||||||
|
Regression
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Commit cb1b1e184 modified msSharePixmapBacking() to derive modesettingPtr from
|
||||||
|
the 'screen' argument. Unfortunately, the name of the argument is misleading --
|
||||||
|
the screen is the slave screen. If the master is modesetting,
|
||||||
|
and the slave is not modesetting, it will segfault.
|
||||||
|
|
||||||
|
To fix the problem, this change derives modesettingPtr from
|
||||||
|
ppix->drawable.pScreen. This method is already used when calling
|
||||||
|
ms->glamor.shareable_fd_from_pixmap() later in the function.
|
||||||
|
|
||||||
|
To avoid future issues, this change also renames the 'screen' argument to
|
||||||
|
'slave'.
|
||||||
|
|
||||||
|
Signed-off-by: Alex Goins <agoins@nvidia.com>
|
||||||
|
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||||
|
(cherry picked from commit 456dff1bf890459840718339279dcb84d36531eb)
|
||||||
|
---
|
||||||
|
hw/xfree86/drivers/modesetting/driver.c | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||||
|
index ce8bac9f5..0817fa470 100644
|
||||||
|
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||||
|
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||||
|
@@ -1454,10 +1454,11 @@ CreateScreenResources(ScreenPtr pScreen)
|
||||||
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
-msSharePixmapBacking(PixmapPtr ppix, ScreenPtr screen, void **handle)
|
||||||
|
+msSharePixmapBacking(PixmapPtr ppix, ScreenPtr slave, void **handle)
|
||||||
|
{
|
||||||
|
#ifdef GLAMOR_HAS_GBM
|
||||||
|
- modesettingPtr ms = modesettingPTR(xf86ScreenToScrn(screen));
|
||||||
|
+ modesettingPtr ms =
|
||||||
|
+ modesettingPTR(xf86ScreenToScrn(ppix->drawable.pScreen));
|
||||||
|
int ret;
|
||||||
|
CARD16 stride;
|
||||||
|
CARD32 size;
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
From b3afd9ccefe156ab2dee993118fcdba40341f66e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Jackson <ajax@redhat.com>
|
||||||
|
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 <ajax@redhat.com>
|
||||||
|
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
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
From ab756b13392448201c106b7629c55f68af4d8ec5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Adam Jackson <ajax@redhat.com>
|
|
||||||
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
|
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
From 94b4a3d45451d29e9539ea234ce8b5e9ed58546c Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <spaz16@wp.pl>
|
||||||
|
Date: Thu, 13 Jan 2022 00:47:27 +0100
|
||||||
|
Subject: [PATCH xserver] present: Check for NULL to prevent crash
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1275
|
||||||
|
Signed-off-by: Błażej Szczygieł <spaz16@wp.pl>
|
||||||
|
Tested-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
(cherry picked from commit 22d5818851967408bb7c903cb345b7ca8766094c)
|
||||||
|
---
|
||||||
|
present/present_scmd.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/present/present_scmd.c b/present/present_scmd.c
|
||||||
|
index 3c68e690b..11391adbb 100644
|
||||||
|
--- a/present/present_scmd.c
|
||||||
|
+++ b/present/present_scmd.c
|
||||||
|
@@ -168,6 +168,9 @@ present_scmd_get_crtc(present_screen_priv_ptr screen_priv, WindowPtr window)
|
||||||
|
if (!screen_priv->info)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
+ if (!screen_priv->info->get_crtc)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
return (*screen_priv->info->get_crtc)(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -206,6 +209,9 @@ present_flush(WindowPtr window)
|
||||||
|
if (!screen_priv->info)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ if (!screen_priv->info->flush)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
(*screen_priv->info->flush) (window);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.20.11
|
Version: 1.20.11
|
||||||
Release: 7%{?gitdate:.%{gitdate}}%{?dist}
|
Release: 10%{?gitdate:.%{gitdate}}%{?dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
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
|
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
|
# 1988922 - [Hyper-V]Installation failed with: 'x or window manager startup failed' when the VM was created with GEN1
|
||||||
|
# 2029769 - fbdev Xorg driver no longer works as a fallback with unsupported hardware
|
||||||
Patch8: 0001-mustard-xfree86-Only-call-the-driver-s-platformProbe.patch
|
Patch8: 0001-mustard-xfree86-Disable-the-PCI-probe-path.patch
|
||||||
|
|
||||||
# Backports from current stable "server-1.20-branch":
|
# Backports from current stable "server-1.20-branch":
|
||||||
# <empty>
|
# <empty>
|
||||||
|
@ -109,6 +109,12 @@ Patch109: 0009-modesetting-Use-EGL_MESA_query_driver-to-select-DRI-.patch
|
||||||
Patch110: 0010-modesetting-Fix-build-with-glamor-disabled.patch
|
Patch110: 0010-modesetting-Fix-build-with-glamor-disabled.patch
|
||||||
# Because we still use automake
|
# Because we still use automake
|
||||||
Patch111: 0011-modesetting-set-gbm-as-dependency-for-autotools.patch
|
Patch111: 0011-modesetting-set-gbm-as-dependency-for-autotools.patch
|
||||||
|
# Xorg crashes with NVIDIA proprietary driver when uisng Present
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=2046330
|
||||||
|
Patch112: 0001-present-Check-for-NULL-to-prevent-crash.patch
|
||||||
|
# Fix a regression with hybrid gfx and NVIDIA proprietary driver
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=2052605
|
||||||
|
Patch113: 0001-modesetting-Fix-msSharePixmapBacking-Segfault-Regres.patch
|
||||||
|
|
||||||
# CVE-2021-4011
|
# CVE-2021-4011
|
||||||
Patch10009: 0001-record-Fix-out-of-bounds-access-in-SwapCreateRegiste.patch
|
Patch10009: 0001-record-Fix-out-of-bounds-access-in-SwapCreateRegiste.patch
|
||||||
|
@ -529,6 +535,17 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 10 2022 Olivier Fourdan <ofourdan@redhat.com> - 1.20.11-10
|
||||||
|
- Fix a regression with hybrid gfx and NVIDIA proprietary driver (#2052605)
|
||||||
|
|
||||||
|
* Fri Jan 28 2022 Olivier Fourdan <ofourdan@redhat.com> - 1.20.11-9
|
||||||
|
- Fix crash with NVIDIA proprietary driver with Present (#2046330)
|
||||||
|
|
||||||
|
* Wed Jan 26 2022 Adam Jackson <ajax@redhat.com> - 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 <ofourdan@redhat.com> - 1.20.11-7
|
* Thu Jan 6 2022 Olivier Fourdan <ofourdan@redhat.com> - 1.20.11-7
|
||||||
- CVE fix for: CVE-2021-4008 (#2030160), CVE-2021-4009 (#2030170),
|
- CVE fix for: CVE-2021-4008 (#2030160), CVE-2021-4009 (#2030170),
|
||||||
CVE-2021-4010 (#2030174), CVE-2021-4011 (#2030179)
|
CVE-2021-4010 (#2030174), CVE-2021-4011 (#2030179)
|
||||||
|
|
Loading…
Reference in New Issue