summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2021-02-01 18:46:41 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-03-24 10:59:25 +0100
commit376a76aa925722ecb0ab2e2b0fa765bf0cf06844 (patch)
tree4b2a228c68d2e9b402662fedb0a95bacacb6c8d8 /include
parent3d9fcc2502dd931aaf13920b61e1f3948030ffed (diff)
kernel, fs: Introduce and use set_restart_fn() and arch_set_restart_data()
commit 5abbe51a526253b9f003e9a0a195638dc882d660 upstream. Preparation for fixing get_nr_restart_syscall() on X86 for COMPAT. Add a new helper which sets restart_block->fn and calls a dummy arch_set_restart_data() helper. Fixes: 609c19a385c8 ("x86/ptrace: Stop setting TS_COMPAT in ptrace code") Signed-off-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20210201174641.GA17871@redhat.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/thread_info.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
index 5e6436741f96..330794252270 100644
--- a/include/linux/thread_info.h
+++ b/include/linux/thread_info.h
@@ -9,6 +9,7 @@
#include <linux/types.h>
#include <linux/bug.h>
+#include <linux/errno.h>
struct timespec;
struct compat_timespec;
@@ -59,6 +60,18 @@ extern long do_no_restart_syscall(struct restart_block *parm);
#ifdef __KERNEL__
+#ifndef arch_set_restart_data
+#define arch_set_restart_data(restart) do { } while (0)
+#endif
+
+static inline long set_restart_fn(struct restart_block *restart,
+ long (*fn)(struct restart_block *))
+{
+ restart->fn = fn;
+ arch_set_restart_data(restart);
+ return -ERESTART_RESTARTBLOCK;
+}
+
#define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __GFP_NOTRACK | __GFP_ZERO)
/*