Added missing patch files.

This commit is contained in:
László Valkó 2019-05-08 15:18:55 +02:00
parent 3003b322e6
commit 02961620cf
4 changed files with 338 additions and 0 deletions

View file

@ -19,6 +19,9 @@ AUX xorg-server-1.19-randr-Account-for-panning-and-transforms-when-constr.patch
AUX xorg-server-1.19.4-sysmacros.patch 986 BLAKE2B 04c111591a6a558913217b24aa2357478e7d931b6cee5185dda31ebd38d68463b4a158a18d8a60ffa7ccc5c65e246f261ebbf7c0ebc81fd3ae31e7579b7adab4 SHA512 858676058779363741901ffbf79666f723f917b49f8627ddd2f31768873adfb416a70bc298e2356861cb5abca8be54a6c64f8fa4fd11a91cce072b93857ad168
AUX xorg-server-1.19.5-glx-do-not-pick-sRGB-config-for-32-bit-RGBA-visual.patch 1555 BLAKE2B ef0a52b2341939f254bdce6b705f0591d0888c8043e5c0da1c4c4e97cdac632c56b27392ac2d7ac63653c7dfe1d381edd619a5e0c1c78f3bf255348c99c30f24 SHA512 66cd27608019557029f15aa81cf1a067e124ec0f854af9e732fef8b12bade4f1797481c86de2437b63ec5364fbeb1e3e05a39aa08df71ad08df79cd7d244e280
AUX xorg-server-1.19.99.901-randr-fix-crash.patch 1774 BLAKE2B 6c8aba90b64989dc215b02514eb53412f8a7353a43373094bf0d0a8564338a4c409f5eabe4a2244fbaba46e6ed0b70d5253027319c92385c83b3a90f8e1911f6 SHA512 8513e59ea8d9782c6f088f202436b1f773a3e782d00a09c879ef49a050bc32aee0eaa8f545ecc4441e57ab82778b07d4e78b480356391e41c528d5b6b3fdda1e
AUX xorg-server-1.20.4-shm-Pick-the-shm-dir-at-run-time-not-build-time.patch 4981 BLAKE2B 46b6548ebddbd962725b4e2a08060decd84f33dc74c2c4a7f4325402712b9dc84fd3325b2027fe0b98e9dd6a6a39bc976ba2a35481c5c49da310cd45a0e4dd3f SHA512 423b8869c3ce2ff74373aa04dca788896d8d47380b5b2368f51e5cc3100f47a94384ef2f616779a44d4cd04b8e0f997190ab7df58ae4605b5c9819fe1f93fb45
AUX xorg-server-1.20.4-shm-Use-memfd_create-when-possible.patch 3194 BLAKE2B 6aca2b21b6b82cdd81a82d45bdbd1f861d4babdf222b73d285f118b42fdcb0a2b1f2949ab2141c7d95d3819c6687dc2323b4da19fbe99d865a2e51393b2c534a SHA512 a2de27ade9c79e8712c66d3ec8a1c9d4af0acdbbbc9bfdc58f0f9d8f2830a069fc3f3a74c92f5b0b0ff889bfc89017e7d0fed7fcd10b8916d0589b9f9171f81a
AUX xorg-server-1.20.4-shm-reindent-shm_tmpfile-to-follow-our-standards.patch 1724 BLAKE2B 34c607f6b6a6f21ed6b34d7a87cb3bc1774f526f32144218c7d5d338474c08c98c72a87b41f3d0afcaf81dc0e8d5989a48fd8e64a6a9e25ad968ad8156f6e984 SHA512 49d5af904bac03cfc8ad89b70541e9af6687f7f0153d06ada64e2226d27dddc1b7bb27024bed73c20c365197858957730de005c515bbae8e22b610c3241b70e4
AUX xorg-sets.conf 199 BLAKE2B e9414694f372d3f2a65bee903522094a60e261ddcd0c49a1d85a2ee804f3edbb5c605ed2d0b44839a91e98957f05ea88da87530f5f36b2db249e09ee56ee2975 SHA512 910fe28f20909243044f079ff35136942b8790f4f28ac42ffc64a76b7f03cd22057087fa5e4e01192080b52c0d89000ea96d5a807c6f11f680d3f43312c5be41
DIST xorg-server-1.19.5.tar.bz2 5965044 BLAKE2B 23375793ea4459a962f412440e307081ce2acd3c646e5db4d1bfac20e267bcbb1752ba8f6de66df06d25eaf92d1b55082a80eced0d44c257a757d5926ca6a7f3 SHA512 928dea5850b98cd815004cfa133eca23cfa9521920c934c68a92787f2cae13cca1534eee772a4fb74b8ae8cb92662b5d68b95b834c8aa8ec57cd57cb4e5dd45c
DIST xorg-server-1.20.3.tar.bz2 6205000 BLAKE2B 9fc8acf1812d0aa4800941dd1846060f91edf1e7ebc92b35e8c2028266d88d3ab3ba14e95f535e5ee41941f8e20769ee75723ba609f5653d4892f97bc5cf91c4 SHA512 ee44554f86df4297f54c5871fe7a18954eeef4338775a25f36d6577b279c4775f61128da71b86cfaeadcc080838d6749dede138d4db178866579da2056543fba

View file

@ -0,0 +1,174 @@
From 19f6cb570becbc4e355807199c6e251fc7935132 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 19 Sep 2018 13:28:06 -0700
Subject: [PATCH xserver] shm: Pick the shm dir at run time, not build time.
Prodding the builder's filesystem for tmp dirs doesn't necessarily
tell you anything about what the actual host's filesystem is going to
look like, so we should just try the dirs at runtime.
Signed-off-by: Eric Anholt <eric@anholt.net>
---
Xext/shm.c | 48 +++++++++++++++++++++++++----------------
configure.ac | 43 ------------------------------------
include/dix-config.h.in | 3 ---
include/meson.build | 5 -----
4 files changed, 29 insertions(+), 70 deletions(-)
diff --git a/Xext/shm.c b/Xext/shm.c
index ed43b9202..2739a59e7 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -1194,36 +1194,46 @@ ProcShmAttachFd(ClientPtr client)
static int
shm_tmpfile(void)
{
-#ifdef SHMDIR
+ const char *shmdirs[] = {
+ "/run/shm",
+ "/var/tmp",
+ "/tmp",
+ };
int fd;
- char template[] = SHMDIR "/shmfd-XXXXXX";
+
#ifdef O_TMPFILE
- fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
- if (fd >= 0) {
- DebugF ("Using O_TMPFILE\n");
- return fd;
+ for (int i = 0; i < ARRAY_SIZE(shmdirs); i++) {
+ fd = open(shmdirs[i], O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
+ if (fd >= 0) {
+ DebugF ("Using O_TMPFILE\n");
+ return fd;
+ }
}
ErrorF ("Not using O_TMPFILE\n");
#endif
+
+ for (int i = 0; i < ARRAY_SIZE(shmdirs); i++) {
+ char template[PATH_MAX];
+ snprintf(template, ARRAY_SIZE(template), "%s/shmfd-XXXXXX", shmdirs[i]);
#ifdef HAVE_MKOSTEMP
- fd = mkostemp(template, O_CLOEXEC);
+ fd = mkostemp(template, O_CLOEXEC);
#else
- fd = mkstemp(template);
+ fd = mkstemp(template);
#endif
- if (fd < 0)
- return -1;
- unlink(template);
+ if (fd < 0)
+ continue;
+ unlink(template);
#ifndef HAVE_MKOSTEMP
- int flags = fcntl(fd, F_GETFD);
- if (flags != -1) {
- flags |= FD_CLOEXEC;
- (void) fcntl(fd, F_SETFD, &flags);
- }
+ int flags = fcntl(fd, F_GETFD);
+ if (flags != -1) {
+ flags |= FD_CLOEXEC;
+ (void) fcntl(fd, F_SETFD, &flags);
+ }
#endif
- return fd;
-#else
+ return fd;
+ }
+
return -1;
-#endif
}
static int
diff --git a/configure.ac b/configure.ac
index 359b62cb5..57a233102 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1115,49 +1115,6 @@ case "$DRI2,$HAVE_DRI2PROTO" in
esac
AM_CONDITIONAL(DRI2, test "x$DRI2" = xyes)
-dnl
-dnl Locate a suitable tmp file system for creating shared memeory files
-dnl
-
-AC_ARG_WITH(shared-memory-dir, AS_HELP_STRING([--with-shared-memory-dir=PATH], [Path to directory in a world-writable temporary directory for anonymous shared memory (default: auto)]),
-[],
-[with_shared_memory_dir=yes])
-
-shmdirs="/run/shm /var/tmp /tmp"
-
-case x"$with_shared_memory_dir" in
-xyes)
- for dir in $shmdirs; do
- case x"$with_shared_memory_dir" in
- xyes)
- echo Checking temp dir "$dir"
- if test -d "$dir"; then
- with_shared_memory_dir="$dir"
- fi
- ;;
- esac
- done
- ;;
-x/*)
- ;;
-xno)
- ;;
-*)
- AC_MSG_ERROR([Invalid directory specified for --with-shared-memory-dir: $with_shared_memory_dir])
- ;;
-esac
-
-case x"$with_shared_memory_dir" in
-xyes)
- AC_MSG_ERROR([No directory found for shared memory temp files.])
- ;;
-xno)
- ;;
-*)
- AC_DEFINE_UNQUOTED(SHMDIR, ["$with_shared_memory_dir"], [Directory for shared memory temp files])
- ;;
-esac
-
AC_ARG_ENABLE(xtrans-send-fds, AS_HELP_STRING([--disable-xtrans-send-fds], [Use Xtrans support for fd passing (default: auto)]), [XTRANS_SEND_FDS=$enableval], [XTRANS_SEND_FDS=auto])
case "x$XTRANS_SEND_FDS" in
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index f8df86608..3bd22b8bb 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -452,9 +452,6 @@
/* Wrap SIGBUS to catch MIT-SHM faults */
#undef BUSFAULT
-/* Directory for shared memory temp files */
-#undef SHMDIR
-
/* Don't let Xdefs.h define 'pointer' */
#define _XTYPEDEF_POINTER 1
diff --git a/include/meson.build b/include/meson.build
index 4a0c12f5a..04c41e999 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -91,11 +91,6 @@ conf_data.set('SYSTEMD_LOGIND', build_systemd_logind)
conf_data.set('NEED_DBUS', build_systemd_logind or build_hal)
conf_data.set('CONFIG_WSCONS', host_machine.system() == 'openbsd')
-# XXX: SHMDIR is weird in autoconf, probing the build system for
-# various tmp directories. Could we replace it with C code at runtime
-# that just uses whatever directory works?
-conf_data.set_quoted('SHMDIR', '/tmp')
-
conf_data.set('HAVE_XSHMFENCE', xshmfence_dep.found())
conf_data.set('WITH_LIBDRM', libdrm_dep.found())
conf_data.set('GLAMOR_HAS_EGL_QUERY_DMABUF',
--
2.19.2

View file

@ -0,0 +1,89 @@
From f6753c117ef0f83499d5e2d6dda226fec9ddf803 Mon Sep 17 00:00:00 2001
From: Alexander Volkov <a.volkov@rusbitech.ru>
Date: Mon, 11 Feb 2019 18:54:10 +0300
Subject: [PATCH xserver] shm: Use memfd_create when possible
It doesn't require shared memory dir and thus allows
to avoid cases when this dir is detected incorrectly,
as in https://bugreports.qt.io/browse/QTBUG-71440
Signed-off-by: Alexander Volkov <a.volkov@rusbitech.ru>
---
Xext/shm.c | 12 ++++++++++++
configure.ac | 2 +-
include/dix-config.h.in | 3 +++
include/meson.build | 1 +
4 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/Xext/shm.c b/Xext/shm.c
index 2739a59e7..506fd4df1 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -35,6 +35,9 @@ in this Software without prior written authorization from The Open Group.
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
+#ifdef HAVE_MEMFD_CREATE
+#include <sys/mman.h>
+#endif
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -1201,6 +1204,15 @@ shm_tmpfile(void)
};
int fd;
+#ifdef HAVE_MEMFD_CREATE
+ fd = memfd_create("xorg", MFD_CLOEXEC|MFD_ALLOW_SEALING);
+ if (fd != -1) {
+ fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK);
+ DebugF ("Using memfd_create\n");
+ return fd;
+ }
+#endif
+
#ifdef O_TMPFILE
for (int i = 0; i < ARRAY_SIZE(shmdirs); i++) {
fd = open(shmdirs[i], O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
diff --git a/configure.ac b/configure.ac
index 0ca96aeb8..79ff7fa64 100644
--- a/configure.ac
+++ b/configure.ac
@@ -159,7 +159,7 @@ dnl Checks for library functions.
AC_CHECK_FUNCS([backtrace geteuid getuid issetugid getresuid \
getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \
mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \
- walkcontext setitimer poll epoll_create1 mkostemp])
+ walkcontext setitimer poll epoll_create1 mkostemp memfd_create])
AC_CONFIG_LIBOBJ_DIR([os])
AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup\
timingsafe_memcmp])
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 855b3d50c..9eb1a924e 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -128,6 +128,9 @@
/* Define to 1 if you have the <linux/fb.h> header file. */
#undef HAVE_LINUX_FB_H
+/* Define to 1 if you have the `memfd_create' function. */
+#undef HAVE_MEMFD_CREATE
+
/* Define to 1 if you have the `mkostemp' function. */
#undef HAVE_MKOSTEMP
diff --git a/include/meson.build b/include/meson.build
index 04c41e999..bbd5a6690 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -141,6 +141,7 @@ conf_data.set('HAVE_GETPEEREID', cc.has_function('getpeereid'))
conf_data.set('HAVE_GETPEERUCRED', cc.has_function('getpeerucred'))
conf_data.set('HAVE_GETPROGNAME', cc.has_function('getprogname'))
conf_data.set('HAVE_GETZONEID', cc.has_function('getzoneid'))
+conf_data.set('HAVE_MEMFD_CREATE', cc.has_function('memfd_create'))
conf_data.set('HAVE_MKOSTEMP', cc.has_function('mkostemp'))
conf_data.set('HAVE_MMAP', cc.has_function('mmap'))
conf_data.set('HAVE_POLL', cc.has_function('poll'))
--
2.19.2

View file

@ -0,0 +1,72 @@
From 804a9b4f57107fa2d0ed1ae0becda5bebaffe6e1 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Wed, 19 Sep 2018 13:20:12 -0700
Subject: [PATCH xserver] shm: reindent shm_tmpfile to follow our standards.
Signed-off-by: Eric Anholt <eric@anholt.net>
---
Xext/shm.c | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/Xext/shm.c b/Xext/shm.c
index 589ed0b4d..ed43b9202 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -1195,34 +1195,34 @@ static int
shm_tmpfile(void)
{
#ifdef SHMDIR
- int fd;
- char template[] = SHMDIR "/shmfd-XXXXXX";
+ int fd;
+ char template[] = SHMDIR "/shmfd-XXXXXX";
#ifdef O_TMPFILE
- fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
- if (fd >= 0) {
- DebugF ("Using O_TMPFILE\n");
- return fd;
- }
- ErrorF ("Not using O_TMPFILE\n");
+ fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
+ if (fd >= 0) {
+ DebugF ("Using O_TMPFILE\n");
+ return fd;
+ }
+ ErrorF ("Not using O_TMPFILE\n");
#endif
#ifdef HAVE_MKOSTEMP
- fd = mkostemp(template, O_CLOEXEC);
+ fd = mkostemp(template, O_CLOEXEC);
#else
- fd = mkstemp(template);
+ fd = mkstemp(template);
#endif
- if (fd < 0)
- return -1;
- unlink(template);
+ if (fd < 0)
+ return -1;
+ unlink(template);
#ifndef HAVE_MKOSTEMP
- int flags = fcntl(fd, F_GETFD);
- if (flags != -1) {
- flags |= FD_CLOEXEC;
- (void) fcntl(fd, F_SETFD, &flags);
- }
+ int flags = fcntl(fd, F_GETFD);
+ if (flags != -1) {
+ flags |= FD_CLOEXEC;
+ (void) fcntl(fd, F_SETFD, &flags);
+ }
#endif
- return fd;
+ return fd;
#else
- return -1;
+ return -1;
#endif
}
--
2.19.2