diff --git a/4cbb372cd734d9e3e125a42b12a9e71caf1632a6.patch b/4cbb372cd734d9e3e125a42b12a9e71caf1632a6.patch new file mode 100644 index 0000000..6062599 --- /dev/null +++ b/4cbb372cd734d9e3e125a42b12a9e71caf1632a6.patch @@ -0,0 +1,36 @@ +From 4cbb372cd734d9e3e125a42b12a9e71caf1632a6 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 11 Mar 2021 21:49:44 +0100 +Subject: [PATCH] syscall: disable epoll_pwait2() for now on 32bit + +Alternative to #18973. +--- + src/basic/missing_syscall.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h +index 13843248045..8158a75a78d 100644 +--- a/src/basic/missing_syscall.h ++++ b/src/basic/missing_syscall.h +@@ -407,6 +407,13 @@ static inline int missing_epoll_pwait2( + const sigset_t *sigset) { + + # if defined(__NR_epoll_pwait2) && HAVE_LINUX_TIME_TYPES_H ++# if __SIZEOF_LONG__ == 4 ++// Someone with an interest in 32bit systems, please have a look at this, and figure out why this hangs on 32bit systems. ++// My educated guess: might be because of issues with the __kernel_timespec translation or because of incorrectly sized sigset_t array. ++# pragma message "epoll_pwait2() appears to be broken on 32bit archs, someone please have a look!" ++ errno = ENOSYS; ++ return -1; ++# else + if (timeout) { + /* Convert from userspace timespec to kernel timespec */ + struct __kernel_timespec ts = { +@@ -417,6 +424,7 @@ static inline int missing_epoll_pwait2( + return syscall(__NR_epoll_pwait2, fd, events, maxevents, &ts, sigset, sigset ? KERNEL_NSIG_BYTES : 0); + } else + return syscall(__NR_epoll_pwait2, fd, events, maxevents, NULL, sigset, sigset ? KERNEL_NSIG_BYTES : 0); ++# endif + # else + errno = ENOSYS; + return -1; diff --git a/systemd.spec b/systemd.spec index 587af87..ba8f25e 100644 --- a/systemd.spec +++ b/systemd.spec @@ -71,6 +71,8 @@ GIT_DIR=../../src/systemd/.git git diffab -M v233..master@{2017-06-15} -- hwdb/[ %endif # Backports of patches from upstream (0000–0499) +# https://github.com/systemd/systemd/pull/18975 +Patch0502: https://github.com/systemd/systemd/pull/18975/commits/4cbb372cd734d9e3e125a42b12a9e71caf1632a6.patch # Downstream-only patches (5000–9999) # https://bugzilla.redhat.com/show_bug.cgi?id=1738828