Sync from SUSE:SLFO:Main xorg-x11-server revision e8970d70e50c71600d0eb16a125e56fa

This commit is contained in:
Adrian Schröter 2024-12-18 16:19:55 +01:00
parent 7dad0f4ee8
commit 79854a90fd
15 changed files with 238 additions and 770 deletions

View File

@ -1,45 +0,0 @@
From 96798fc1967491c80a4d0c8d9e0a80586cb2152b Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri, 22 Mar 2024 18:51:45 -0700
Subject: [PATCH 1/4] Xi: ProcXIGetSelectedEvents needs to use unswapped length
to send reply
CVE-2024-31080
Reported-by: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69762
Fixes: 53e821ab4 ("Xi: add request processing for XIGetSelectedEvents.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463>
---
Xi/xiselectev.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
index edcb8a0d3..ac1494987 100644
--- a/Xi/xiselectev.c
+++ b/Xi/xiselectev.c
@@ -349,6 +349,7 @@ ProcXIGetSelectedEvents(ClientPtr client)
InputClientsPtr others = NULL;
xXIEventMask *evmask = NULL;
DeviceIntPtr dev;
+ uint32_t length;
REQUEST(xXIGetSelectedEventsReq);
REQUEST_SIZE_MATCH(xXIGetSelectedEventsReq);
@@ -418,10 +419,12 @@ ProcXIGetSelectedEvents(ClientPtr client)
}
}
+ /* save the value before SRepXIGetSelectedEvents swaps it */
+ length = reply.length;
WriteReplyToClient(client, sizeof(xXIGetSelectedEventsReply), &reply);
if (reply.num_masks)
- WriteToClient(client, reply.length * 4, buffer);
+ WriteToClient(client, length * 4, buffer);
free(buffer);
return Success;
--
2.35.3

View File

@ -1,43 +0,0 @@
From 3e77295f888c67fc7645db5d0c00926a29ffecee Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri, 22 Mar 2024 18:56:27 -0700
Subject: [PATCH 2/4] Xi: ProcXIPassiveGrabDevice needs to use unswapped length
to send reply
CVE-2024-31081
Fixes: d220d6907 ("Xi: add GrabButton and GrabKeysym code.")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463>
---
Xi/xipassivegrab.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
index c9ac2f855..896233bec 100644
--- a/Xi/xipassivegrab.c
+++ b/Xi/xipassivegrab.c
@@ -93,6 +93,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
GrabParameters param;
void *tmp;
int mask_len;
+ uint32_t length;
REQUEST(xXIPassiveGrabDeviceReq);
REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq,
@@ -247,9 +248,11 @@ ProcXIPassiveGrabDevice(ClientPtr client)
}
}
+ /* save the value before SRepXIPassiveGrabDevice swaps it */
+ length = rep.length;
WriteReplyToClient(client, sizeof(rep), &rep);
if (rep.num_modifiers)
- WriteToClient(client, rep.length * 4, modifiers_failed);
+ WriteToClient(client, length * 4, modifiers_failed);
out:
free(modifiers_failed);
--
2.35.3

View File

@ -1,47 +0,0 @@
From 6c684d035c06fd41c727f0ef0744517580864cef Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri, 22 Mar 2024 19:07:34 -0700
Subject: [PATCH 3/4] Xquartz: ProcAppleDRICreatePixmap needs to use unswapped
length to send reply
CVE-2024-31082
Fixes: 14205ade0 ("XQuartz: appledri: Fix byte swapping in replies")
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463>
---
hw/xquartz/xpr/appledri.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/xquartz/xpr/appledri.c b/hw/xquartz/xpr/appledri.c
index 77574655b..40422b61a 100644
--- a/hw/xquartz/xpr/appledri.c
+++ b/hw/xquartz/xpr/appledri.c
@@ -272,6 +272,7 @@ ProcAppleDRICreatePixmap(ClientPtr client)
xAppleDRICreatePixmapReply rep;
int width, height, pitch, bpp;
void *ptr;
+ CARD32 stringLength;
REQUEST_SIZE_MATCH(xAppleDRICreatePixmapReq);
@@ -307,6 +308,7 @@ ProcAppleDRICreatePixmap(ClientPtr client)
if (sizeof(rep) != sz_xAppleDRICreatePixmapReply)
ErrorF("error sizeof(rep) is %zu\n", sizeof(rep));
+ stringLength = rep.stringLength; /* save unswapped value */
if (client->swapped) {
swaps(&rep.sequenceNumber);
swapl(&rep.length);
@@ -319,7 +321,7 @@ ProcAppleDRICreatePixmap(ClientPtr client)
}
WriteToClient(client, sizeof(rep), &rep);
- WriteToClient(client, rep.stringLength, path);
+ WriteToClient(client, stringLength, path);
return Success;
}
--
2.35.3

View File

@ -1,110 +0,0 @@
From bdca6c3d1f5057eeb31609b1280fc93237b00c77 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue, 30 Jan 2024 13:13:35 +1000
Subject: [PATCH 4/4] render: fix refcounting of glyphs during
ProcRenderAddGlyphs
Previously, AllocateGlyph would return a new glyph with refcount=0 and a
re-used glyph would end up not changing the refcount at all. The
resulting glyph_new array would thus have multiple entries pointing to
the same non-refcounted glyphs.
AddGlyph may free a glyph, resulting in a UAF when the same glyph
pointer is then later used.
Fix this by returning a refcount of 1 for a new glyph and always
incrementing the refcount for a re-used glyph, followed by dropping that
refcount back down again when we're done with it.
CVE-2024-31083, ZDI-CAN-22880
This vulnerability was discovered by:
Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1463>
---
render/glyph.c | 5 +++--
render/glyphstr.h | 1 +
render/render.c | 15 +++++++++++----
3 files changed, 15 insertions(+), 6 deletions(-)
Index: xwayland-22.1.5/render/glyph.c
===================================================================
--- xwayland-22.1.5.orig/render/glyph.c
+++ xwayland-22.1.5/render/glyph.c
@@ -245,10 +245,11 @@ FreeGlyphPicture(GlyphPtr glyph)
}
}
-static void
+void
FreeGlyph(GlyphPtr glyph, int format)
{
CheckDuplicates(&globalGlyphs[format], "FreeGlyph");
+ BUG_RETURN(glyph->refcnt == 0);
if (--glyph->refcnt == 0) {
GlyphRefPtr gr;
int i;
@@ -354,7 +355,7 @@ AllocateGlyph(xGlyphInfo * gi, int fdept
glyph = (GlyphPtr) malloc(size);
if (!glyph)
return 0;
- glyph->refcnt = 0;
+ glyph->refcnt = 1;
glyph->size = size + sizeof(xGlyphInfo);
glyph->info = *gi;
dixInitPrivates(glyph, (char *) glyph + head_size, PRIVATE_GLYPH);
Index: xwayland-22.1.5/render/glyphstr.h
===================================================================
--- xwayland-22.1.5.orig/render/glyphstr.h
+++ xwayland-22.1.5/render/glyphstr.h
@@ -109,6 +109,8 @@ extern GlyphPtr FindGlyph(GlyphSetPtr gl
extern GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format);
+extern void FreeGlyph(GlyphPtr glyph, int format);
+
extern Bool
ResizeGlyphSet(GlyphSetPtr glyphSet, CARD32 change);
Index: xwayland-22.1.5/render/render.c
===================================================================
--- xwayland-22.1.5.orig/render/render.c
+++ xwayland-22.1.5/render/render.c
@@ -1076,6 +1076,7 @@ ProcRenderAddGlyphs(ClientPtr client)
if (glyph_new->glyph && glyph_new->glyph != DeletedGlyph) {
glyph_new->found = TRUE;
+ ++glyph_new->glyph->refcnt;
}
else {
GlyphPtr glyph;
@@ -1168,8 +1169,10 @@ ProcRenderAddGlyphs(ClientPtr client)
err = BadAlloc;
goto bail;
}
- for (i = 0; i < nglyphs; i++)
+ for (i = 0; i < nglyphs; i++) {
AddGlyph(glyphSet, glyphs[i].glyph, glyphs[i].id);
+ FreeGlyph(glyphs[i].glyph, glyphSet->fdepth);
+ }
if (glyphsBase != glyphsLocal)
free(glyphsBase);
@@ -1179,9 +1182,13 @@ ProcRenderAddGlyphs(ClientPtr client)
FreePicture((void *) pSrc, 0);
if (pSrcPix)
FreeScratchPixmapHeader(pSrcPix);
- for (i = 0; i < nglyphs; i++)
- if (glyphs[i].glyph && !glyphs[i].found)
- free(glyphs[i].glyph);
+ for (i = 0; i < nglyphs; i++) {
+ if (glyphs[i].glyph) {
+ --glyphs[i].glyph->refcnt;
+ if (!glyphs[i].found)
+ free(glyphs[i].glyph);
+ }
+ }
if (glyphsBase != glyphsLocal)
free(glyphsBase);
return err;

View File

@ -1,74 +0,0 @@
From c3c2218ab797516e4d63a93a078d77c6ce872d03 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Fri, 5 Apr 2024 15:24:49 +0200
Subject: [PATCH] render: Avoid possible double-free in ProcRenderAddGlyphs()
ProcRenderAddGlyphs() adds the glyph to the glyphset using AddGlyph() and
then frees it using FreeGlyph() to decrease the reference count, after
AddGlyph() has increased it.
AddGlyph() however may chose to reuse an existing glyph if it's already
in the glyphSet, and free the glyph that was given, in which case the
caller function, ProcRenderAddGlyphs() will call FreeGlyph() on an
already freed glyph, as reported by ASan:
READ of size 4 thread T0
#0 in FreeGlyph xserver/render/glyph.c:252
#1 in ProcRenderAddGlyphs xserver/render/render.c:1174
#2 in Dispatch xserver/dix/dispatch.c:546
#3 in dix_main xserver/dix/main.c:271
#4 in main xserver/dix/stubmain.c:34
#5 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
#6 in __libc_start_main_impl ../csu/libc-start.c:360
#7 (/usr/bin/Xwayland+0x44fe4)
Address is located 0 bytes inside of 64-byte region
freed by thread T0 here:
#0 in __interceptor_free libsanitizer/asan/asan_malloc_linux.cpp:52
#1 in _dixFreeObjectWithPrivates xserver/dix/privates.c:538
#2 in AddGlyph xserver/render/glyph.c:295
#3 in ProcRenderAddGlyphs xserver/render/render.c:1173
#4 in Dispatch xserver/dix/dispatch.c:546
#5 in dix_main xserver/dix/main.c:271
#6 in main xserver/dix/stubmain.c:34
#7 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
previously allocated by thread T0 here:
#0 in __interceptor_malloc libsanitizer/asan/asan_malloc_linux.cpp:69
#1 in AllocateGlyph xserver/render/glyph.c:355
#2 in ProcRenderAddGlyphs xserver/render/render.c:1085
#3 in Dispatch xserver/dix/dispatch.c:546
#4 in dix_main xserver/dix/main.c:271
#5 in main xserver/dix/stubmain.c:34
#6 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
SUMMARY: AddressSanitizer: heap-use-after-free xserver/render/glyph.c:252 in FreeGlyph
To avoid that, make sure not to free the given glyph in AddGlyph().
v2: Simplify the test using the boolean returned from AddGlyph() (Michel)
v3: Simplify even more by not freeing the glyph in AddGlyph() (Peter)
Fixes: bdca6c3d1 - render: fix refcounting of glyphs during ProcRenderAddGlyphs
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1659
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
(cherry picked from commit 337d8d48b618d4fc0168a7b978be4c3447650b04)
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1478>
---
render/glyph.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/render/glyph.c b/render/glyph.c
index d5fc5f3c9..f5069d42f 100644
--- a/render/glyph.c
+++ b/render/glyph.c
@@ -291,8 +291,6 @@ AddGlyph(GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id)
gr = FindGlyphRef(&globalGlyphs[glyphSet->fdepth], signature,
TRUE, glyph->sha1);
if (gr->glyph && gr->glyph != DeletedGlyph && gr->glyph != glyph) {
- FreeGlyphPicture(glyph);
- dixFreeObjectWithPrivates(glyph, PRIVATE_GLYPH);
glyph = gr->glyph;
}
else if (gr->glyph != glyph) {
--
2.35.3

View File

@ -1,25 +0,0 @@
@@ -, +, @@
---
xkb/xkb.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/xkb/xkb.c
+++ a/xkb/xkb.c
@@ -2991,13 +2991,13 @@ _XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev,
XkbSymInterpretPtr sym;
unsigned int skipped = 0;
- if ((unsigned) (req->firstSI + req->nSI) > compat->num_si) {
- compat->num_si = req->firstSI + req->nSI;
+ if ((unsigned) (req->firstSI + req->nSI) > compat->size_si) {
+ compat->num_si = compat->size_si = req->firstSI + req->nSI;
compat->sym_interpret = reallocarray(compat->sym_interpret,
- compat->num_si,
+ compat->size_si,
sizeof(XkbSymInterpretRec));
if (!compat->sym_interpret) {
- compat->num_si = 0;
+ compat->num_si = compat->size_si = 0;
return BadAlloc;
}
}
--

View File

@ -1,345 +0,0 @@
From 3216e0c618cc330f053ed36a749c8d8cfeb87a2f Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Fri, 17 Aug 2012 09:49:24 +1000
Subject: [PATCH] autobind GPUs to the screen, (v5)
this is racy and really not what we want for hotplug going forward,
but until DE support is in GNOME its probably for the best.
v2: fix if config or slave config is NULL
v3: fix multi useful slaves
v4: do not unbound GPUs before attaching them
compatibility fix for 5c7af02b10
-- Michal Srb <msrb@suse.com>
v5: Do not use xf86CrtcConfig, it is not filled by nvidia proprietary driver,
only use randr structures.
Auto configure outputs of additional GPUs on start, just like the outputs
of the main GPU are configured.
-- Michal Srb <msrb@suse.com>
DO NOT UPSTREAM.
Signed-off-by: Dave Airlie <airlied@gmail.com>
---
hw/xfree86/common/xf86Init.c | 12 ++++++++++++
hw/xfree86/common/xf86platformBus.c | 3 +++
hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+)
Index: xorg-server-1.20.5/dix/main.c
===================================================================
--- xorg-server-1.20.5.orig/dix/main.c
+++ xorg-server-1.20.5/dix/main.c
@@ -122,6 +122,8 @@ extern void Dispatch(void);
CallbackListPtr RootWindowFinalizeCallback = NULL;
+CallbackListPtr RootWindowInitialized = NULL;
+
int
dix_main(int argc, char *argv[], char *envp[])
{
@@ -246,6 +248,8 @@ dix_main(int argc, char *argv[], char *e
for (i = 0; i < screenInfo.numScreens; i++)
InitRootWindow(screenInfo.screens[i]->root);
+ CallCallbacks(&RootWindowInitialized, NULL);
+
InitCoreDevices();
InitInput(argc, argv);
InitAndStartDevices();
Index: xorg-server-1.20.5/hw/xfree86/common/xf86Init.c
===================================================================
--- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Init.c
+++ xorg-server-1.20.5/hw/xfree86/common/xf86Init.c
@@ -76,6 +76,7 @@
#include "xf86DDC.h"
#include "xf86Xinput.h"
#include "xf86InPriv.h"
+#include "xf86Crtc.h"
#include "picturestr.h"
#include "randrstr.h"
#include "glxvndabi.h"
@@ -294,6 +295,237 @@ AddVTAtoms(CallbackListPtr *pcbl, void *
"Failed to register VT properties\n");
}
+/*
+ * This function activates all outputs of all GPU screens associated with the
+ * given master screen and sets them to their preferred resolution next to
+ * each other left-to-right.
+ */
+static void
+xf86AutoConfigureProviderOutputsForMaster(ScreenPtr pMasterScreen)
+{
+ ScreenPtr pScreen;
+ rrScrPrivPtr pMasterScrPriv, pScrPriv;
+ RROutputPtr pOutput;
+ RRCrtcPtr pCrtc;
+ RRCrtcPtr *pUsedCrtcs;
+ int usedCrtcsCount;
+ int screenWidth, screenHeight, screenWidthMM, screenHeightMM;
+ int i, j, k, l;
+
+ struct OutputConfig {
+ RROutputPtr pOutput;
+ RRCrtcPtr pCrtc;
+
+ int x;
+ int y;
+ } *outputConfigs;
+ int outputConfigsCount = 0, outputConfigsUsed = 0;
+
+ if (!dixPrivateKeyRegistered(rrPrivKey))
+ return;
+
+ pMasterScrPriv = rrGetScrPriv(pMasterScreen);
+ if (!pMasterScrPriv)
+ return;
+
+ // Count the potential maximum of outputs that we will try to auto configure
+ for (i = 0; i < xf86NumGPUScreens; i++) {
+ pScreen = xf86GPUScreens[i]->pScreen;
+ if (pScreen->current_master != pMasterScreen || !pScreen->is_output_slave)
+ continue;
+
+ pScrPriv = rrGetScrPriv(pScreen);
+ if (!pScrPriv)
+ continue;
+
+ outputConfigsCount += pScrPriv->numOutputs;
+ }
+
+ if (outputConfigsCount == 0)
+ return;
+
+ outputConfigs = calloc(outputConfigsCount, sizeof(*outputConfigs));
+
+ screenWidth = 0;
+ screenHeight = 0;
+
+ // Consider the master's own outputs/crtcs that were already configured
+ for (i = 0; i < pMasterScrPriv->numCrtcs; i++) {
+ if (!pMasterScrPriv->crtcs[i]->mode)
+ continue;
+
+ screenWidth = max(screenWidth, pMasterScrPriv->crtcs[i]->x + pMasterScrPriv->crtcs[i]->mode->mode.width);
+ screenHeight = max(screenHeight, pMasterScrPriv->crtcs[i]->y + pMasterScrPriv->crtcs[i]->mode->mode.height);
+ }
+
+ // Now add as many outputs from slave GPUs as we can next to it
+ for (i = 0; i < xf86NumGPUScreens; i++) {
+ pScreen = xf86GPUScreens[i]->pScreen;
+ if (pScreen->current_master != pMasterScreen || !pScreen->is_output_slave)
+ continue;
+
+ pScrPriv = rrGetScrPriv(pScreen);
+ if (!pScrPriv)
+ continue;
+
+ pUsedCrtcs = calloc(pScrPriv->numCrtcs, sizeof(*pUsedCrtcs));
+ if (!pUsedCrtcs)
+ continue;
+
+ usedCrtcsCount = 0;
+
+ for (j = 0; j < pScrPriv->numOutputs; j++) {
+ pOutput = pScrPriv->outputs[j];
+
+ if (pOutput->connection != RR_Connected ||
+ pOutput->nonDesktop ||
+ pOutput->numModes == 0 ||
+ pOutput->numCrtcs == 0)
+ continue;
+
+ if (screenWidth + pOutput->modes[0]->mode.width > pMasterScrPriv->maxWidth ||
+ screenHeight + pOutput->modes[0]->mode.height > pMasterScrPriv->maxHeight)
+ {
+ // It can't fit into the maximal size, skip
+ continue;
+ }
+
+ for (k = 0; k < pOutput->numCrtcs; k++) {
+ pCrtc = pOutput->crtcs[k];
+ for (l = 0; l < usedCrtcsCount; l++) {
+ if (pCrtc == pUsedCrtcs[l]) {
+ pCrtc = NULL;
+ break;
+ }
+ }
+ if (pCrtc) {
+ break;
+ }
+ }
+
+ if (!pCrtc) {
+ // No more free CRTCs to setup this output, skip
+ continue;
+ }
+
+ pUsedCrtcs[usedCrtcsCount] = pCrtc;
+ usedCrtcsCount++;
+
+ assert(outputConfigsUsed < outputConfigsCount);
+ outputConfigs[outputConfigsUsed].pOutput = pOutput;
+ outputConfigs[outputConfigsUsed].pCrtc = pCrtc;
+ outputConfigs[outputConfigsUsed].x = screenWidth;
+ outputConfigs[outputConfigsUsed].y = 0;
+ outputConfigsUsed++;
+
+ screenWidth += pOutput->modes[0]->mode.width;
+ screenHeight += pOutput->modes[0]->mode.height;
+ }
+
+ free(pUsedCrtcs);
+ }
+
+ if (outputConfigsUsed == 0)
+ goto out;
+
+ if (screenWidth < pMasterScrPriv->minWidth)
+ screenWidth = pMasterScrPriv->minWidth;
+ if (screenHeight < pMasterScrPriv->minHeight)
+ screenHeight = pMasterScrPriv->minHeight;
+
+ if (pMasterScrPriv->mmWidth > 0 &&
+ pMasterScrPriv->mmHeight > 0 &&
+ pMasterScrPriv->width > 0 &&
+ pMasterScrPriv->height > 0)
+ {
+ // If the master screen already has some DPI, keep it
+ screenWidthMM = pMasterScrPriv->mmWidth * screenWidth / pMasterScreen->width;
+ screenHeightMM = pMasterScrPriv->mmHeight * screenHeight / pMasterScreen->height;
+ } else {
+ assert(outputConfigsUsed > 0);
+ // Otherwise use DPI of the first output
+ screenWidthMM = outputConfigs[0].pOutput->mmWidth * screenWidth / outputConfigs[0].pOutput->modes[0]->mode.width;
+ screenHeightMM = outputConfigs[0].pOutput->mmHeight * screenHeight / outputConfigs[0].pOutput->modes[0]->mode.height;
+ }
+
+ if (!RRScreenSizeSet(pMasterScreen, screenWidth, screenHeight, screenWidthMM, screenHeightMM))
+ goto out;
+
+ for (i = 0; i < outputConfigsUsed; i++) {
+ RRCrtcSet(
+ outputConfigs[i].pCrtc,
+ outputConfigs[i].pOutput->modes[0],
+ outputConfigs[i].x,
+ outputConfigs[i].y,
+ RR_Rotate_0,
+ 1,
+ &outputConfigs[i].pOutput
+ );
+ }
+
+out:
+ free(outputConfigs);
+}
+
+static void
+xf86AutoConfigProviderOutputs(CallbackListPtr *pcbl, void *data, void *call_data)
+{
+ int i;
+
+ for (i = 0; i < xf86NumScreens; i++) {
+ xf86AutoConfigureProviderOutputsForMaster(xf86Screens[i]->pScreen);
+ }
+}
+
+void
+xf86AutoConfigOutputDevice(ScreenPtr slave, ScreenPtr master)
+{
+ RRProviderPtr master_provider;
+ RRProviderPtr slave_provider;
+ rrScrPrivPtr master_rp;
+ rrScrPrivPtr slave_rp;
+
+ if (!dixPrivateKeyRegistered(rrPrivKey))
+ return;
+
+ master_rp = rrGetScrPriv(master);
+ slave_rp = rrGetScrPriv(slave);
+
+ if (!master_rp || !slave_rp)
+ return;
+
+ master_provider = master_rp->provider;
+ slave_provider = slave_rp->provider;
+
+ if (!master_provider || !slave_provider)
+ return;
+
+ if ((master_provider->capabilities & RR_Capability_SinkOffload) &&
+ (slave_provider->capabilities & RR_Capability_SourceOffload)) {
+ /* source offload */
+ AttachOffloadGPU(master, slave);
+ slave_provider->offload_sink = master_provider;
+ }
+ if ((master_provider->capabilities & RR_Capability_SourceOutput) &&
+ (slave_provider->capabilities & RR_Capability_SinkOutput)) {
+ /* sink offload */
+ AttachOutputGPU(master, slave);
+ slave_provider->output_source = master_provider;
+ }
+}
+
+static void
+xf86AutoConfigOutputDevices(void)
+{
+ int i;
+
+ for (i = 0; i < xf86NumGPUScreens; i++) {
+ xf86AutoConfigOutputDevice(xf86GPUScreens[i]->pScreen, xf86Screens[0]->pScreen);
+ }
+
+ AddCallback(&RootWindowInitialized, xf86AutoConfigProviderOutputs, NULL);
+}
+
static Bool
xf86ScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
@@ -770,6 +996,8 @@ InitOutput(ScreenInfo * pScreenInfo, int
for (i = 0; i < xf86NumGPUScreens; i++)
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
+ xf86AutoConfigOutputDevices();
+
xf86VGAarbiterWrapFunctions();
if (sigio_blocked)
input_unlock();
Index: xorg-server-1.20.5/hw/xfree86/common/xf86platformBus.c
===================================================================
--- xorg-server-1.20.5.orig/hw/xfree86/common/xf86platformBus.c
+++ xorg-server-1.20.5/hw/xfree86/common/xf86platformBus.c
@@ -594,6 +594,8 @@ xf86platformAddGPUDevices(DriverPtr drvp
return foundScreen;
}
+extern void xf86AutoConfigOutputDevice(ScreenPtr slave, ScreenPtr master);
+
int
xf86platformAddDevice(int index)
{
@@ -665,6 +667,7 @@ xf86platformAddDevice(int index)
}
/* attach unbound to 0 protocol screen */
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
+ xf86AutoConfigOutputDevice(xf86GPUScreens[i]->pScreen, xf86Screens[0]->pScreen);
RRResourcesChanged(xf86Screens[0]->pScreen);
RRTellChanged(xf86Screens[0]->pScreen);
Index: xorg-server-1.20.5/include/dix.h
===================================================================
--- xorg-server-1.20.5.orig/include/dix.h
+++ xorg-server-1.20.5/include/dix.h
@@ -599,6 +599,8 @@ typedef struct {
extern _X_EXPORT CallbackListPtr RootWindowFinalizeCallback;
+extern _X_EXPORT CallbackListPtr RootWindowInitialized;
+
extern int
XItoCoreType(int xi_type);
extern Bool

View File

@ -0,0 +1,45 @@
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;

BIN
xorg-server-21.1.11.tar.gz (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
xorg-server-21.1.14.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,32 +1,115 @@
-------------------------------------------------------------------
Sat Oct 19 22:17:53 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
Sun Dec 8 19:01:08 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- U_xkb-Fix-buffer-overflow-in-_XkbSetCompatMap.patch
* Heap-based buffer overflow privilege escalation in _XkbSetCompatMap
(CVE-2024-9632, bsc#1231565)
- re-added and re-enabled u_xfree86-activate-GPU-screens-on-autobind.patch
in order to fix the regression of a black screen in login screen
(SDDM) on some hybrid graphics Laptop (Intel Meteor Lake-P/
NVIDIA GeForce RTX 4060) (boo#1234301)
-------------------------------------------------------------------
Wed Apr 10 14:09:31 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
Wed Dec 4 12:41:37 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- no longer apply and remove
u_xfree86-activate-GPU-screens-on-autobind.patch since it's
no longer needed and might be harmful even ... (tested
successfully on Thinkpad P16 with Intel/NVIDIA hybrid graphics)
- remove no longer applied and no longer needed patch
n_xserver-optimus-autoconfig-hack.patch (feature implemented
upstream)
-------------------------------------------------------------------
Tue Oct 29 19:08:32 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- 21.1.14 covers also
* CVE-2024-31080 (bsc#1222309)
* CVE-2024-31081 (bsc#1222310)
* CVE-2024-31082 (bsc#1222311)
* CVE-2024-31083 (bsc#1222312)
-------------------------------------------------------------------
Tue Oct 29 19:00:06 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- Security update 21.1.14
This release addresses the following security issue
* CVE-2024-9632: Heap-based buffer overflow privilege escalation
in _XkbSetCompatMap (bsc#1231565)
- supersedes U_render-Avoid-possible-double-free-in-ProcRenderAddGl.patch
- supersedes U_xorg-xserver-e89edec497ba.patch
-------------------------------------------------------------------
Tue Sep 24 11:20:23 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- added conflicts to patterns-wsl-tmpfiles to Xserver packages
as this patterns package creates a symlink from /tmp/.X11-unix to
/mnt/wslg/.X11-unix and therefore prevents Xservers from creating
this needed directory (bsc#1230755)
-------------------------------------------------------------------
Thu Jul 25 16:04:30 UTC 2024 - Martin Jambor <mjambor@suse.com>
- Added U_xorg-xserver-e89edec497ba.patch to fix incompatible pointer
type error with GCC 14.
-------------------------------------------------------------------
Thu Jul 18 10:44:59 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- u_fbdevhw_kernel6.9_break_fbdev_open.patch
* 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 (gitlab xserver issue#1714)
-------------------------------------------------------------------
Wed Jun 12 09:08:15 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
- Fix python3 shebang in source python script to use specific python
interpreter and remove dependency on /usr/bin/python3
(bsc#1212476)
-------------------------------------------------------------------
Wed Apr 10 13:20:43 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- U_render-Avoid-possible-double-free-in-ProcRenderAddGl.patch
* fixes regression for security fix for CVE-2024-31083 (bsc#1222312,
boo#1222442, gitlab xserver issue #1659)
-------------------------------------------------------------------
Fri Apr 5 02:23:52 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
Thu Apr 4 08:13:19 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- U_CVE-2024-31080-Xi-ProcXIGetSelectedEvents-needs-to-use-unswapped-le.patch
* Xi: ProcXIGetSelectedEvents needs to use unswapped length
(CVE-2024-31080, bsc#1222309)
- U_CVE-2024-31081-Xi-ProcXIPassiveGrabDevice-needs-to-use-unswapped-le.patch
* Xi: ProcXIPassiveGrabDevice needs to use unswapped length to send reply
(CVE-2024-31081, bsc#1222310)
- U_CVE-2024-31082-Xquartz-ProcAppleDRICreatePixmap-needs-to-use-unswap.patch
* Xquartz: ProcAppleDRICreatePixmap needs to use unswapped length to send reply
(CVE-2024-31082, bsc#1222311)
- U_CVE-2024-31083-render-fix-refcounting-of-glyphs-during-ProcRenderAd.patch
* render: fix refcounting of glyphs during ProcRenderAddGlyphs
(CVE-2024-31083, bsc#1222312)
- Security update 21.1.12
This release addresses the following 4 security issues:
* CVE-2024-31080
* CVE-2024-31081
* CVE-2024-31082
* CVE-2024-31083
Additionally it provides a way to disable byte-swapped clients either by
command line flag or config option. This allows to turn off byte swapping
code that has been a source of security problems lately.
-------------------------------------------------------------------
Mon Feb 26 12:16:26 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
- Use %patch -P N instead of deprecated %patchN.
-------------------------------------------------------------------
Tue Feb 20 20:36:19 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
- fix permissions of files in xorg-x11-server-source for tigervnc
build later (needed since latest autoconf)
-------------------------------------------------------------------
Thu Feb 15 17:08:16 UTC 2024 - Joan Torres <joan.torres@suse.com>
- Provide again xorg-x11-server-source
* xwayland sources are not meant for a generic server.
* https://github.com/TigerVNC/tigervnc/issues/1728
-------------------------------------------------------------------
Thu Feb 15 10:46:29 UTC 2024 - Joan Torres <joan.torres@suse.com>
- Stop providing xorg-x11-server-source from xorg-x11-server
* Now the sources are provided by xwayland because it is more updated.
* Fixes bsc#1219892.
-------------------------------------------------------------------
Mon Feb 12 09:58:50 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>

View File

@ -202,3 +202,42 @@ BQkaVB2nAAoJEBRwbb4eS0VA5e0AoO/nFK4k4fsAgsLMs02kk3plifoAAJ4iK85P
ugQAoOlJ2NPM8mRqRCA2ZKXPqz7TGm64AKCTLcYRDmqX4aZcgK4yRBbe8GXhDA==
=rEW/
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: FD00 04A2 6EAD FE43 A4C3 F249 C6F7 AE20 0374 452D
Comment: Povilas Kanapickas <povilas@radix.lt>
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
=h52C
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -36,14 +36,14 @@
%endif
Name: xorg-x11-server
Version: 21.1.11
Version: 21.1.14
Release: 0
URL: http://xorg.freedesktop.org/
Summary: X
License: MIT
Group: System/X11/Servers/XF86_4
Source0: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-%{version}.tar.gz
Source10: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-%{version}.tar.gz.sig
Source0: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-%{version}.tar.xz
Source10: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-%{version}.tar.xz.sig
Source11: xorg-x11-server.keyring
Source1: sysconfig.displaymanager.template
Source2: README.updates
@ -57,11 +57,12 @@ Source90: xorg-x11-server.macros.in
# Source91 and Source99 are used to ensure proper ABI provides.
Source91: xorg-server-provides
Source92: pre_checkin.sh
Patch1231565: U_xkb-Fix-buffer-overflow-in-_XkbSetCompatMap.patch
BuildRequires: bison
BuildRequires: flex
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(bigreqsproto) >= 1.1.0
BuildRequires: pkgconfig(compositeproto)
@ -190,6 +191,7 @@ Requires: xkeyboard-config
# Unfortunately we need a requires here due to OBS not installing 'recommended'
# packages :-(
Requires: xorg-x11-server-Xvfb
Conflicts: patterns-wsl-tmpfiles
# PATCH-FEATURE-OPENSUSE n_xorg-x11-server-rpmmacros.patch dimstar@opensuse.org -- Provide RPM macros to require correct ABI Versions.
Patch1: N_default-module-path.diff
@ -218,8 +220,6 @@ Patch210: u_os-connections-Check-for-stale-FDs.patch
Patch215: u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch
Patch1000: n_xserver-optimus-autoconfig-hack.patch
Patch1162: b_cache-xkbcomp-output-for-fast-start-up.patch
Patch1211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
Patch1222: b_sync-fix.patch
@ -239,13 +239,9 @@ Patch1930: u_xfree86-activate-GPU-screens-on-autobind.patch
Patch1960: u_sync-pci-ids-with-Mesa.patch
Patch1218176: u_miCloseScreen_check_for_null_pScreen_dev_private.patch
Patch2000: u_fbdevhw_kernel6.9_break_fbdev_open.patch
Patch1222309: U_CVE-2024-31080-Xi-ProcXIGetSelectedEvents-needs-to-use-unswapped-le.patch
Patch1222310: U_CVE-2024-31081-Xi-ProcXIPassiveGrabDevice-needs-to-use-unswapped-le.patch
Patch1222311: U_CVE-2024-31082-Xquartz-ProcAppleDRICreatePixmap-needs-to-use-unswap.patch
Patch1222312: U_CVE-2024-31083-render-fix-refcounting-of-glyphs-during-ProcRenderAd.patch
Patch1222442: U_render-Avoid-possible-double-free-in-ProcRenderAddGl.patch
Patch1218176: u_miCloseScreen_check_for_null_pScreen_dev_private.patch
%description
This package contains the X.Org Server.
@ -259,6 +255,7 @@ Requires: xkeyboard-config
Recommends: xorg-x11-fonts-core
Provides: xorg-x11-Xnest
Obsoletes: xorg-x11-Xnest
Conflicts: patterns-wsl-tmpfiles
%description extra
This package contains additional Xservers (Xephyr, Xnest).
@ -274,6 +271,7 @@ Recommends: xorg-x11-fonts-core
Provides: xorg-x11-Xvfb
Provides: xorg-x11-server:/usr/bin/Xvfb
Obsoletes: xorg-x11-Xvfb
Conflicts: patterns-wsl-tmpfiles
%description Xvfb
This package contains the virtual Xserver Xvfb.
@ -355,61 +353,47 @@ This package contains patched sources of X.Org Server.
sh %{SOURCE92} --verify . %{SOURCE91}
%if 0%{?suse_version} < 1315
%patch1
%patch -P 1
%endif
%patch2 -p1
%patch3 -p0
%patch4 -p0
%patch5 -p1
%patch6 -p0
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch -P 2 -p1
%patch -P 3 -p0
%patch -P 4 -p0
%patch -P 5 -p1
%patch -P 6 -p0
%patch -P 7 -p1
%patch -P 8 -p1
%patch -P 9 -p1
%patch -P 10 -p1
%patch -P 11 -p1
%patch -P 12 -p1
#
%patch100 -p1
#%patch101 -p1
%patch104 -p1
%patch117 -p1
%patch160 -p1
%patch208 -p1
%patch209 -p1
%patch -P 100 -p1
#%patch -P 101 -p1
%patch -P 104 -p1
%patch -P 117 -p1
%patch -P 160 -p1
%patch -P 208 -p1
%patch -P 209 -p1
### not applicable anymore
#%patch210 -p1
%patch215 -p1
### apparently supersed by upstream
### commit 078277e4d92f05a90c4715d61b89b9d9d38d68ea
### Author: Dave Airlie <airlied@redhat.com>
### Date: Fri Aug 17 09:49:24 2012 +1000
###
### xf86: autobind GPUs to the screen
#%patch1000 -p1
#%patch -P 210 -p1
%patch -P 215 -p1
### disabled for now
#%patch1162 -p1
#%patch -P 1162 -p1
### disabled for now
#%patch1211 -p1
#%patch -P 1211 -p1
### patch222 might not be applicable anymore
#%patch1222 -p1
%patch1401 -p1
%patch1503 -p1
%patch1900 -p1
%patch1910 -p1
%patch1920 -p1
%patch1921 -p1
%patch1930 -p1
%patch1960 -p1
#%patch -P 1222 -p1
%patch -P 1401 -p1
%patch -P 1503 -p1
%patch -P 1900 -p1
%patch -P 1910 -p1
%patch -P 1920 -p1
%patch -P 1921 -p1
%patch -P 1930 -p1
%patch -P 1960 -p1
%patch -P 2000 -p1
%patch1218176 -p1
%patch1222309 -p1
%patch1222310 -p1
%patch1222311 -p1
%patch1222312 -p1
%patch1222442 -p1
%patch1231565 -p1
%patch -P 1218176 -p1
%build
# We have some -z now related errors during X default startup (boo#1197994):
@ -531,6 +515,12 @@ mkdir -p %{buildroot}/usr/src/xserver
xargs cp --parents --target-directory=%{buildroot}/usr/src/xserver < source-file-list
# unneeded python2 script; simply remove it (boo#1179591)
rm -f %{buildroot}/usr/src/xserver/config/fdi2iclass.py
# fix permissions for tigervnc build later (needed since latest autoconf)
chmod 0755 %{buildroot}/usr/src/xserver/config.guess
chmod 0755 %{buildroot}/usr/src/xserver/config.sub
chmod 0755 %{buildroot}/usr/src/xserver/install-sh
# Fix python shebang, use specific python version to do not depend on /usr/bin/python3
%{?python3_fix_shebang_path:%python3_fix_shebang_path %{buildroot}/usr/src/xserver/hw/xwin/glx/gen_gl_wrappers.py}
%post
%tmpfiles_create xkb.conf