From 2127ffcf75121072fbb89f4490648d56f116c98f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jun 24 2021 04:29:51 +0000 Subject: import xorg-x11-server-Xwayland-21.1.1-4.el8 --- diff --git a/SOURCES/0027-glx-Set-ContextTag-for-all-contexts.patch b/SOURCES/0027-glx-Set-ContextTag-for-all-contexts.patch index 0d7e217..1bedd5c 100644 --- a/SOURCES/0027-glx-Set-ContextTag-for-all-contexts.patch +++ b/SOURCES/0027-glx-Set-ContextTag-for-all-contexts.patch @@ -1,4 +1,4 @@ -From 604ac8f46a85a5c68b00751baa699d770f754e1c Mon Sep 17 00:00:00 2001 +From 1607ac6870f7cf67c30b96529ea5ca389c771a3d Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Thu, 3 Jun 2021 17:51:01 +0200 Subject: [PATCH xserver 27/27] glx: Set ContextTag for all contexts @@ -10,33 +10,36 @@ However, several other places expect to find a context for the tag or they would raise a GLXBadContextTag error, such as WaitGL() or WaitX(). Set the context tag for direct contexts as well, to avoid raising an -error and possibly killing the client. +error and possibly killing the client and set currentClient. Thanks to Erik Kurzinger for spotting the issue. Signed-off-by: Olivier Fourdan Reviewed-by: Adam Jackson (cherry picked from commit c468d34c7208c9041f9c077b54a00ae9cccad6a3) +(cherry picked from commit aad61e8e03311eb8bae4f7db59e65634733eadc2) --- - glx/glxcmds.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + glx/glxcmds.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/glx/glxcmds.c b/glx/glxcmds.c -index 1b9ad6d14..bd62e913c 100644 +index 1b9ad6d14..8b2170306 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c -@@ -664,9 +664,10 @@ xorgGlxMakeCurrent(ClientPtr client, GLXContextTag tag, XID drawId, XID readId, +@@ -662,10 +662,11 @@ xorgGlxMakeCurrent(ClientPtr client, GLXContextTag tag, XID drawId, XID readId, + glxc->readPriv = NULL; + return __glXError(GLXBadContext); } ++ } ++ glxServer.setContextTagPrivate(client, newContextTag, glxc); ++ if (glxc) glxc->currentClient = client; - glxServer.setContextTagPrivate(client, newContextTag, glxc); - } +- } -+ glxServer.setContextTagPrivate(client, newContextTag, glxc); -+ if (prevglxc) { prevglxc->currentClient = NULL; - if (!prevglxc->idExists) { -- 2.31.1 diff --git a/SPECS/xorg-x11-server-Xwayland.spec b/SPECS/xorg-x11-server-Xwayland.spec index 1021d14..33eac1f 100644 --- a/SPECS/xorg-x11-server-Xwayland.spec +++ b/SPECS/xorg-x11-server-Xwayland.spec @@ -9,7 +9,7 @@ Summary: Xwayland Name: xorg-x11-server-Xwayland Version: 21.1.1 -Release: 3%{?gitdate:.%{gitdate}git%{shortcommit}}%{?dist} +Release: 4%{?gitdate:.%{gitdate}git%{shortcommit}}%{?dist} URL: http://www.x.org %if 0%{?gitdate} @@ -151,6 +151,9 @@ rm -Rf $RPM_BUILD_ROOT%{_localstatedir}/lib/xkb %{_libdir}/pkgconfig/xwayland.pc %changelog +* Mon Jun 21 2021 Olivier Fourdan - 21.1.1-4 +- Fix a use-after-free in the previous changes for GLX + * Mon Jun 14 2021 Olivier Fourdan - 21.1.1-3 - Backport fixes for GLX and EGLstream (#1961981)