summarylogtreecommitdiffstats
path: root/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
diff options
context:
space:
mode:
Diffstat (limited to '0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch')
-rw-r--r--0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch b/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
new file mode 100644
index 000000000000..501beaf5e7cb
--- /dev/null
+++ b/0006-LINUX-Fix-includes-for-fatal_signal_pending-test.patch
@@ -0,0 +1,73 @@
+From 95a8c71f80e6d0aa83297fedf9f808ee01c32623 Mon Sep 17 00:00:00 2001
+From: Andrew Deason <adeason@sinenomine.net>
+Date: Thu, 28 Jan 2021 16:59:47 -0600
+Subject: [PATCH 6/8] LINUX: Fix includes for fatal_signal_pending test
+
+Commit 8b6ae289 (LINUX: Avoid lookup ENOENT on fatal signals) added a
+configure test for fatal_signal_pending(). However, this check fails
+incorrectly ever since Linux 4.11, because fatal_signal_pending() was moved
+from linux/sched.h to linux/sched/signal.h in Linux commit 2a1f062a
+(sched/headers: Move signal wakeup [...]). Fix this by including
+linux/sched/signal.h if we have it during the configure test.
+
+A false negative on this configure test doesn't break the build, but
+it disables one of our safeguards preventing incorrect negative
+dentries at runtime. The function fatal_signal_pending() hasn't
+changed in quite some time (except for what header it lives in); it
+was introduced in Linux 2.6.25 via Linux commit f776d12d (Add
+fatal_signal_pending). So to try to avoid this mistake again in the
+future, make it so a missing fatal_signal_pending() breaks the build
+if we're on Linux 2.6.25+.
+
+Reviewed-on: https://gerrit.openafs.org/14508
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+(cherry picked from commit 0c1465e4f3310daa54f1e799f76237604222666d)
+
+Change-Id: I1334c060f8ab5733461ebf7c191dffa7be830021
+Reviewed-on: https://gerrit.openafs.org/14509
+Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
+Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+---
+ src/afs/LINUX/osi_vnodeops.c | 2 ++
+ src/cf/linux-kernel-func.m4 | 7 ++++++-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
+index ba4f1e6af..4d0f55c95 100644
+--- a/src/afs/LINUX/osi_vnodeops.c
++++ b/src/afs/LINUX/osi_vnodeops.c
+@@ -1206,6 +1206,8 @@ filter_enoent(int code)
+ if (code == ENOENT && fatal_signal_pending(current)) {
+ return EINTR;
+ }
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)
++# error fatal_signal_pending not available, but it should be
+ #endif
+ return code;
+ }
+diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4
+index 11d071806..e45a30540 100644
+--- a/src/cf/linux-kernel-func.m4
++++ b/src/cf/linux-kernel-func.m4
+@@ -42,8 +42,13 @@ AC_CHECK_LINUX_FUNC([d_make_root],
+ AC_CHECK_LINUX_FUNC([do_sync_read],
+ [#include <linux/fs.h>],
+ [do_sync_read(NULL, NULL, 0, NULL);])
++dnl - fatal_signal_pending introduced in 2.6.25
++dnl - moved from linux/sched.h to linux/sched/signal.h in 4.11
+ AC_CHECK_LINUX_FUNC([fatal_signal_pending],
+- [#include <linux/sched.h>],
++ [#include <linux/sched.h>
++ #ifdef HAVE_LINUX_SCHED_SIGNAL_H
++ # include <linux/sched/signal.h>
++ #endif],
+ [fatal_signal_pending(NULL);])
+ AC_CHECK_LINUX_FUNC([file_dentry],
+ [#include <linux/fs.h>],
+--
+2.30.1
+