From 365cbbfc4b99f7d9937d1b8b61f1483556a5b57a Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 18 Dec 2020 09:36:30 -0500 Subject: [PATCH] os, shm: fcntl()'s third argument is integer, not pointer All of these uses were attempting to set FD_CLOEXEC, which happens to be (1<<0). Since flags is going to be aligned in memory, its address is never going to have the low bit set, so we were never actually setting what we meant to. Fixes: xorg/xserver#1114 --- Xext/shm.c | 2 +- os/inputthread.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Xext/shm.c b/Xext/shm.c index 0deb9a9457..071bd1a41e 100644 --- a/Xext/shm.c +++ b/Xext/shm.c @@ -1248,7 +1248,7 @@ shm_tmpfile(void) int flags = fcntl(fd, F_GETFD); if (flags != -1) { flags |= FD_CLOEXEC; - (void) fcntl(fd, F_SETFD, &flags); + (void) fcntl(fd, F_SETFD, flags); } #endif return fd; diff --git a/os/inputthread.c b/os/inputthread.c index 361d96efa0..3469cfc1cd 100644 --- a/os/inputthread.c +++ b/os/inputthread.c @@ -427,7 +427,7 @@ InputThreadPreInit(void) flags = fcntl(inputThreadInfo->readPipe, F_GETFD); if (flags != -1) { flags |= FD_CLOEXEC; - (void)fcntl(inputThreadInfo->readPipe, F_SETFD, &flags); + (void)fcntl(inputThreadInfo->readPipe, F_SETFD, flags); } SetNotifyFd(inputThreadInfo->readPipe, InputThreadNotifyPipe, X_NOTIFY_READ, NULL); @@ -438,7 +438,7 @@ InputThreadPreInit(void) flags = fcntl(hotplugPipeRead, F_GETFD); if (flags != -1) { flags |= FD_CLOEXEC; - (void)fcntl(hotplugPipeRead, F_SETFD, &flags); + (void)fcntl(hotplugPipeRead, F_SETFD, flags); } hotplugPipeWrite = hotplugPipe[1];