Comment
Risk is low. The patch only reorders a struct field in a header to preserve ABI and adds a comment marking the non-ABI tail, plus a const-correctness fix in a local helper. There are no new build-time downloads, privilege changes, persistence mechanisms, or suspicious install/script/unit modifications. The only thing to note is that changing a public struct layout can be ABI-sensitive, but this change is explicitly intended to restore compatibility rather than introduce a backdoor or integrity issue.
@@ -0,0 +1,88 @@
+From 10249fc458c59755aade79caefb84b6cd953e77d Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Fri, 13 Nov 2026 14:38:06 +0100
+Subject: [PATCH 1/2] miext: damage: fix ABI mismatch caused by Xorg patch
+
+The xorg commit da72833185481481052972f031262e94976131ef which had been
+cherry-picked introduces a new field in the middle of the DamageRec struct,
+which is part of the public driver ABI.
+
+It broke at least the amdgpu driver (at time of writing no others known yet)
+
+So doing what's the correct approach here: always put new fields at the
+end of the struct, never change existing layout.
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+---
+ miext/damage/damagestr.h | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/miext/damage/damagestr.h b/miext/damage/damagestr.h
+index 41f4afe38cf..e2287402ba8 100644
+--- a/miext/damage/damagestr.h
++++ b/miext/damage/damagestr.h
+@@ -1,3 +1,4 @@
++/* PART OF PUBLIC SDK */
+ /*
+ * Copyright © 2003 Keith Packard
+ *
+@@ -35,12 +36,6 @@
+ typedef struct _damage {
+ DamagePtr pNext;
+ DamagePtr pNextWin;
+- /*
+- * Head of the pNext list this damage is currently linked on, or NULL if it is not linked on any list. Recorded at
+- * insertion time so that removal always unlinks from the list the damage actually went onto; see
+- * damageInsertDamage().
+- */
+- DamagePtr *pListHead;
+ RegionRec damage;
+
+ DamageReportLevel damageLevel;
+@@ -55,6 +50,14 @@ typedef struct _damage {
+ Bool reportAfter;
+ RegionRec pendingDamage; /* will be flushed post submission at the latest */
+ ScreenPtr pScreen;
++
++ /* --- not part of ABI beyond here --- */
++ /*
++ * Head of the pNext list this damage is currently linked on, or NULL if it is not linked on any list. Recorded at
++ * insertion time so that removal always unlinks from the list the damage actually went onto; see
++ * damageInsertDamage().
++ */
++ DamagePtr *pListHead;
+ } DamageRec;
+
+ typedef struct _damageScrPriv {
+
+From 2c2b9d9ccf27167681510333bfe57ce2a235a035 Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Fri, 13 Nov 2026 15:36:36 +0100
+Subject: [PATCH 2/2] config: udev: fix const issue in strrstr()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+../config/udev.c: In function ‘strrstr’:
+../config/udev.c:485:10: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
+ 485 | prev = strstr(haystack, needle);
+ | ^
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+---
+ config/udev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config/udev.c b/config/udev.c
+index 45da00f5cc2..5903a9a1397 100644
+--- a/config/udev.c
++++ b/config/udev.c
+@@ -480,7 +480,7 @@ config_udev_fini(void)
+ /* Find the last occurrence of the needle in haystack */
+ static char *strrstr(const char *haystack, const char *needle)
+ {
+- char *prev, *last, *tmp;
++ const char *prev, *last, *tmp;
+
+ prev = strstr(haystack, needle);
+ if (!prev)