Accepting request 945532 from X11:Wayland

OBS-URL: https://build.opensuse.org/request/show/945532
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/wayland?expand=0&rev=45
This commit is contained in:
Dominique Leuenberger 2022-01-12 23:22:05 +00:00 committed by Git OBS Bridge
commit d9fb064246
7 changed files with 109 additions and 7 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:baccd902300d354581cd5ad3cc49daa4921d55fb416a5883e218750fef166d15
size 456380

Binary file not shown.

3
wayland-1.20.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b8a034154c7059772e0fdbd27dbfcda6c732df29cae56a82274f6ec5d7cd8725
size 225188

BIN
wayland-1.20.0.tar.xz.sig Normal file

Binary file not shown.

View File

@ -0,0 +1,74 @@
From b20428663afa1a6351eb943b5f2992a744c18797 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <ofourdan@redhat.com>
Date: Mon, 10 Jan 2022 15:10:07 +0100
Subject: [PATCH] shm: Close file descriptors not needed
Commit 5a981ee8 implemented a fallback path for platforms which do not
support mremap() such as FreeBSD.
To do so, the file descriptor for the mmap() is not closed immediately
but instead kept as long as the pool exists.
That induces more file descriptors kept open for longer, which in turn
may cause problems as wl_shm may be using a lot of file descriptors,
especially with Xwayland which can create a lot of pixmaps on behalf of
its X11 clients.
For platforms where mremap() is available, keeping those file
descriptors opened is a bit of a waste and may cause exhaustion of file
descriptors sooner that before commit 5a981ee8.
Only keep the mmap() file descriptor open on platforms which do not
implement mremap() and close it immediately as before on others.
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1283
---
src/wayland-shm.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/wayland-shm.c b/src/wayland-shm.c
index 63ac0d7d..17ab77f4 100644
--- a/src/wayland-shm.c
+++ b/src/wayland-shm.c
@@ -65,10 +65,12 @@ struct wl_shm_pool {
char *data;
ssize_t size;
ssize_t new_size;
+#ifndef MREMAP_MAYMOVE
/* The following three fields are needed for mremap() emulation. */
int mmap_fd;
int mmap_flags;
int mmap_prot;
+#endif
bool sigbus_is_impossible;
};
@@ -153,7 +155,9 @@ shm_pool_unref(struct wl_shm_pool *pool, bool external)
return;
munmap(pool->data, pool->size);
+#ifndef MREMAP_MAYMOVE
close(pool->mmap_fd);
+#endif
free(pool);
}
@@ -344,10 +348,14 @@ shm_create_pool(struct wl_client *client, struct wl_resource *resource,
strerror(errno));
goto err_free;
}
+#ifndef MREMAP_MAYMOVE
/* We may need to keep the fd, prot and flags to emulate mremap(). */
pool->mmap_fd = fd;
pool->mmap_prot = prot;
pool->mmap_flags = flags;
+#else
+ close(fd);
+#endif
pool->resource =
wl_resource_create(client, &wl_shm_pool_interface, 1, id);
if (!pool->resource) {
--
GitLab

View File

@ -1,3 +1,30 @@
-------------------------------------------------------------------
Tue Jan 11 08:29:19 UTC 2022 - Alynx Zhou <alynx.zhou@suse.com>
- Add wayland-shm-Close-file-descriptors-not-needed.patch: For
platforms that support mremap(), we don't need to hold file
descriptors all the time, because programs like Xwayland will
hold a lot of file descriptors and may crash, this patch close
file descriptors earlier for those platforms (bsc#1194190).
-------------------------------------------------------------------
Mon Jan 10 18:09:27 UTC 2022 - Stefan Dirsch <sndirsch@suse.com>
- obsolete/provide libwayland-egl-devel 18.0.2 also on sle15-sp4
-------------------------------------------------------------------
Thu Dec 9 18:08:16 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
- Update to release 1.20
* A few protocol additions: wl_surface.offset allows clients to
update a surface's buffer offset independently from the
buffer, wl_output.name and description allow clients to
identify outputs without depending on xdg-output-unstable-v1.
* In protocol definitions, events have a new "type" attribute
and can now be marked as destructors.
* A number of bug fixes, including a race condition when
destroying proxies in multi-threaded clients.
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Nov 12 20:08:09 UTC 2021 - Bjørn Lie <bjorn.lie@gmail.com> Fri Nov 12 20:08:09 UTC 2021 - Bjørn Lie <bjorn.lie@gmail.com>

View File

@ -15,7 +15,7 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/ # Please submit bugfixes or comments via http://bugs.opensuse.org/
# #
%define _version 1.19.0 %define _version 1.20.0
%if 0%{?suse_version} >= 1500 && 0%{?suse_version} < 1550 %if 0%{?suse_version} >= 1500 && 0%{?suse_version} < 1550
%define eglversion 99~%_version %define eglversion 99~%_version
%else %else
@ -37,12 +37,13 @@ Source: http://wayland.freedesktop.org/releases/%name-%version.tar.xz
Source2: http://wayland.freedesktop.org/releases/%name-%version.tar.xz.sig Source2: http://wayland.freedesktop.org/releases/%name-%version.tar.xz.sig
Source3: %name.keyring Source3: %name.keyring
Source4: baselibs.conf Source4: baselibs.conf
# PATCH-FIX-UPSTREAM wayland-shm-Close-file-descriptors-not-needed.patch bsc#1194190 alynx.zhou@suse.com -- Close file descriptors not needed to prevent Xwayland crash.
Patch1: wayland-shm-Close-file-descriptors-not-needed.patch
BuildRequires: c_compiler BuildRequires: c_compiler
BuildRequires: c++_compiler BuildRequires: c++_compiler
BuildRequires: meson
BuildRequires: libxml2-tools BuildRequires: libxml2-tools
BuildRequires: libxslt-tools BuildRequires: libxslt-tools
BuildRequires: meson
BuildRequires: pkg-config BuildRequires: pkg-config
BuildRequires: xz BuildRequires: xz
BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(expat)
@ -115,7 +116,7 @@ Requires: libwayland-cursor0 = %_version
Requires: libwayland-egl1 = %eglversion Requires: libwayland-egl1 = %eglversion
Requires: libwayland-server0 = %_version Requires: libwayland-server0 = %_version
%if 0%{?suse_version} >= 1500 %if 0%{?suse_version} >= 1500
%if 0%{?suse_version} >= 1550 %if (0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400)
Provides: libwayland-egl-devel = 18.1.5 Provides: libwayland-egl-devel = 18.1.5
Obsoletes: libwayland-egl-devel < 18.1.5 Obsoletes: libwayland-egl-devel < 18.1.5
%else %else