From: Andy Lutomirski <luto@amacapital.net> To: linux-kernel@vger.kernel.org, Kees Cook <keescook@chromium.org>, Will Drewry <wad@chromium.org>, Oleg Nesterov <oleg@redhat.com> Cc: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@linux-mips.org, linux-arch@vger.kernel.org, linux-security-module@vger.kernel.org, Alexei Starovoitov <ast@plumgrid.com>, hpa@zytor.com, Frederic Weisbecker <fweisbec@gmail.com>, Andy Lutomirski <luto@amacapital.net> Subject: [PATCH v5 2/5] x86,entry: Only call user_exit if TIF_NOHZ Date: Fri, 5 Sep 2014 15:13:53 -0700 [thread overview] Message-ID: <0b13e0e24ec0307d67ab7a23b58764f6b1270116.1409954077.git.luto@amacapital.net> (raw) In-Reply-To: <cover.1409954077.git.luto@amacapital.net> In-Reply-To: <cover.1409954077.git.luto@amacapital.net> The RCU context tracking code requires that arch code call user_exit() on any entry into kernel code if TIF_NOHZ is set. This patch adds a check for TIF_NOHZ and a comment to the syscall entry tracing code. The main purpose of this patch is to make the code easier to follow: one can read the body of user_exit and of every function it calls without finding any explanation of why it's called for traced syscalls but not for untraced syscalls. This makes it clear when user_exit() is necessary. Cc: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Andy Lutomirski <luto@amacapital.net> --- arch/x86/kernel/ptrace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 39296d25708c..bbf338a04a5d 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -1449,7 +1449,12 @@ long syscall_trace_enter(struct pt_regs *regs) { long ret = 0; - user_exit(); + /* + * If TIF_NOHZ is set, we are required to call user_exit() before + * doing anything that could touch RCU. + */ + if (test_thread_flag(TIF_NOHZ)) + user_exit(); /* * If we stepped into a sysenter/syscall insn, it trapped in -- 1.9.3
WARNING: multiple messages have this Message-ID (diff)
From: luto@amacapital.net (Andy Lutomirski) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v5 2/5] x86,entry: Only call user_exit if TIF_NOHZ Date: Fri, 5 Sep 2014 15:13:53 -0700 [thread overview] Message-ID: <0b13e0e24ec0307d67ab7a23b58764f6b1270116.1409954077.git.luto@amacapital.net> (raw) In-Reply-To: <cover.1409954077.git.luto@amacapital.net> The RCU context tracking code requires that arch code call user_exit() on any entry into kernel code if TIF_NOHZ is set. This patch adds a check for TIF_NOHZ and a comment to the syscall entry tracing code. The main purpose of this patch is to make the code easier to follow: one can read the body of user_exit and of every function it calls without finding any explanation of why it's called for traced syscalls but not for untraced syscalls. This makes it clear when user_exit() is necessary. Cc: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Andy Lutomirski <luto@amacapital.net> --- arch/x86/kernel/ptrace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 39296d25708c..bbf338a04a5d 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -1449,7 +1449,12 @@ long syscall_trace_enter(struct pt_regs *regs) { long ret = 0; - user_exit(); + /* + * If TIF_NOHZ is set, we are required to call user_exit() before + * doing anything that could touch RCU. + */ + if (test_thread_flag(TIF_NOHZ)) + user_exit(); /* * If we stepped into a sysenter/syscall insn, it trapped in -- 1.9.3
next prev parent reply other threads:[~2014-09-05 22:14 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-09-05 22:13 [PATCH v5 0/5] x86: two-phase syscall tracing and seccomp fastpath Andy Lutomirski 2014-09-05 22:13 ` Andy Lutomirski 2014-09-05 22:13 ` [PATCH v5 1/5] x86,x32,audit: Fix x32's AUDIT_ARCH wrt audit Andy Lutomirski 2014-09-05 22:13 ` Andy Lutomirski 2014-09-09 2:43 ` [tip:x86/seccomp] x86, x32, audit: " tip-bot for Andy Lutomirski 2014-09-05 22:13 ` Andy Lutomirski [this message] 2014-09-05 22:13 ` [PATCH v5 2/5] x86,entry: Only call user_exit if TIF_NOHZ Andy Lutomirski 2014-09-09 2:43 ` [tip:x86/seccomp] x86, entry: " tip-bot for Andy Lutomirski 2014-09-05 22:13 ` [PATCH v5 3/5] x86: Split syscall_trace_enter into two phases Andy Lutomirski 2014-09-05 22:13 ` Andy Lutomirski 2014-09-09 2:44 ` [tip:x86/seccomp] " tip-bot for Andy Lutomirski 2015-02-05 21:19 ` [PATCH v5 3/5] " Dmitry V. Levin 2015-02-05 21:19 ` Dmitry V. Levin 2015-02-05 21:27 ` Kees Cook 2015-02-05 21:27 ` Kees Cook 2015-02-05 21:27 ` Kees Cook 2015-02-05 21:40 ` Dmitry V. Levin 2015-02-05 21:40 ` Dmitry V. Levin 2015-02-05 21:40 ` Dmitry V. Levin 2015-02-05 21:52 ` Andy Lutomirski 2015-02-05 21:52 ` Andy Lutomirski 2015-02-05 21:52 ` Andy Lutomirski 2015-02-05 23:12 ` Kees Cook 2015-02-05 23:12 ` Kees Cook 2015-02-05 23:12 ` Kees Cook 2015-02-05 23:39 ` Dmitry V. Levin 2015-02-05 23:39 ` Dmitry V. Levin 2015-02-05 23:39 ` Dmitry V. Levin 2015-02-05 23:49 ` Kees Cook 2015-02-05 23:49 ` Kees Cook 2015-02-05 23:49 ` Kees Cook 2015-02-06 0:09 ` Andy Lutomirski 2015-02-06 0:09 ` Andy Lutomirski 2015-02-06 0:09 ` Andy Lutomirski 2015-02-06 2:32 ` Dmitry V. Levin 2015-02-06 2:32 ` Dmitry V. Levin 2015-02-06 2:32 ` Dmitry V. Levin 2015-02-06 2:38 ` Andy Lutomirski 2015-02-06 2:38 ` Andy Lutomirski 2015-02-06 2:38 ` Andy Lutomirski 2015-02-06 19:23 ` Kees Cook 2015-02-06 19:23 ` Kees Cook 2015-02-06 19:23 ` Kees Cook 2015-02-06 19:32 ` Andy Lutomirski 2015-02-06 19:32 ` Andy Lutomirski 2015-02-06 19:32 ` Andy Lutomirski 2015-02-06 20:07 ` Kees Cook 2015-02-06 20:07 ` Kees Cook 2015-02-06 20:07 ` Kees Cook 2015-02-06 20:12 ` Andy Lutomirski 2015-02-06 20:12 ` Andy Lutomirski 2015-02-06 20:12 ` Andy Lutomirski 2015-02-06 20:16 ` Kees Cook 2015-02-06 20:16 ` Kees Cook 2015-02-06 20:16 ` Kees Cook 2015-02-06 20:20 ` Andy Lutomirski 2015-02-06 20:20 ` Andy Lutomirski 2015-02-06 20:20 ` Andy Lutomirski 2015-02-06 23:17 ` a method to distinguish between syscall-enter/exit-stop Dmitry V. Levin 2015-02-06 23:17 ` Dmitry V. Levin 2015-02-06 23:17 ` Dmitry V. Levin 2015-02-07 1:07 ` Kees Cook 2015-02-07 1:07 ` Kees Cook 2015-02-07 1:07 ` Kees Cook 2015-02-07 3:04 ` Dmitry V. Levin 2015-02-07 3:04 ` Dmitry V. Levin 2015-02-07 3:04 ` Dmitry V. Levin 2015-02-06 20:11 ` [PATCH v5 3/5] x86: Split syscall_trace_enter into two phases H. Peter Anvin 2015-02-06 20:11 ` H. Peter Anvin 2015-02-06 20:11 ` H. Peter Anvin 2014-09-05 22:13 ` [PATCH v5 4/5] x86_64,entry: Treat regs->ax the same in fastpath and slowpath syscalls Andy Lutomirski 2014-09-05 22:13 ` [PATCH v5 4/5] x86_64, entry: " Andy Lutomirski 2014-09-09 2:44 ` [tip:x86/seccomp] x86_64, entry: Treat regs-> ax " tip-bot for Andy Lutomirski 2014-09-05 22:13 ` [PATCH v5 5/5] x86_64,entry: Use split-phase syscall_trace_enter for 64-bit syscalls Andy Lutomirski 2014-09-05 22:13 ` [PATCH v5 5/5] x86_64, entry: " Andy Lutomirski 2014-09-09 2:44 ` [tip:x86/seccomp] " tip-bot for Andy Lutomirski 2014-09-08 19:29 ` [PATCH v5 0/5] x86: two-phase syscall tracing and seccomp fastpath Kees Cook 2014-09-08 19:29 ` Kees Cook 2014-09-08 19:29 ` Kees Cook 2014-09-08 19:49 ` H. Peter Anvin 2014-09-08 19:49 ` H. Peter Anvin 2014-09-08 19:49 ` H. Peter Anvin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=0b13e0e24ec0307d67ab7a23b58764f6b1270116.1409954077.git.luto@amacapital.net \ --to=luto@amacapital.net \ --cc=ast@plumgrid.com \ --cc=fweisbec@gmail.com \ --cc=hpa@zytor.com \ --cc=keescook@chromium.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mips@linux-mips.org \ --cc=linux-security-module@vger.kernel.org \ --cc=oleg@redhat.com \ --cc=wad@chromium.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.