[gtk: 1/2] gdk: seal in-memory files when possible



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]