Client: Add F_SEAL_SHRINK seal to shm backing file
This lets libwayland-server avoid installing a SIGBUS handler when it wants to mmap() the backing file and access the contents of shared memory client buffers. Change-Id: Id0b17f729799535d73e8700c5a99c32fd88a068a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Edmundson <davidedmundson@kde.org>
This commit is contained in:
parent
f733811432
commit
b2c0a783d0
@ -16,6 +16,7 @@
|
||||
|
||||
#include <QtWaylandClient/private/wayland-wayland-client-protocol.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
@ -25,6 +26,9 @@
|
||||
# ifndef MFD_CLOEXEC
|
||||
# define MFD_CLOEXEC 0x0001U
|
||||
# endif
|
||||
# ifndef MFD_ALLOW_SEALING
|
||||
# define MFD_ALLOW_SEALING 0x0002U
|
||||
# endif
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@ -39,7 +43,9 @@ QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display,
|
||||
int fd = -1;
|
||||
|
||||
#ifdef SYS_memfd_create
|
||||
fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC);
|
||||
fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC | MFD_ALLOW_SEALING);
|
||||
if (fd >= 0)
|
||||
fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL);
|
||||
#endif
|
||||
|
||||
QScopedPointer<QFile> filePointer;
|
||||
|
Loading…
x
Reference in New Issue
Block a user