diff options
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.patch | 73 |
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 + |