[gtk: 1/2] gdk: seal in-memory files when possible
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk: 1/2] gdk: seal in-memory files when possible
- Date: Wed, 10 Oct 2018 11:12:23 +0000 (UTC)
commit e9a67cc6d03012f3210d36d96dae9227825b0ce6
Author: emersion <contact emersion fr>
Date: Sun Sep 23 20:56:18 2018 +0200
gdk: seal in-memory files when possible
This can be used by compositors to mmap memory without having to
handle SIGBUS.
gdk/wayland/gdkdisplay-wayland.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
---
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index 712112b565..7bcf18ca30 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -1207,13 +1207,21 @@ open_shared_memory (void)
#if defined (__NR_memfd_create)
if (!force_shm_open)
{
- ret = syscall (__NR_memfd_create, "gdk-wayland", MFD_CLOEXEC);
+ int options = MFD_CLOEXEC;
+#if defined (MFD_ALLOW_SEALING)
+ options |= MFD_ALLOW_SEALING;
+#endif
+ ret = syscall (__NR_memfd_create, "gdk-wayland", options);
/* fall back to shm_open until debian stops shipping 3.16 kernel
* See bug 766341
*/
if (ret < 0 && errno == ENOSYS)
force_shm_open = TRUE;
+#if defined (F_ADD_SEALS) && defined (F_SEAL_SHRINK)
+ if (ret >= 0)
+ fcntl (ret, F_ADD_SEALS, F_SEAL_SHRINK);
+#endif
}
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]