From: jistone@redhat.com (Josh Stone)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: enable_irq before ret_fast_syscall tracing
Date: Mon, 22 Jun 2015 17:15:22 -0700 [thread overview]
Message-ID: <5588A51A.1080008@redhat.com> (raw)
In-Reply-To: <1435018134-9653-1-git-send-email-jistone@redhat.com>
On 06/22/2015 05:08 PM, Josh Stone wrote:
> When reached via the slow path __sys_trace, __sys_trace_return and its
> callees usually have interrupts still enabled. This is important if any
> will schedule, like for a ptrace syscall-exit-stop.
>
> In the rarer case where tracing was not enabled on syscall entry, and
> then ret_fast_syscall sees tracing was enabled mid-syscall, then it
> also ought to branch to __sys_trace_return with interrupts enabled.
Side note -- I haven't actually found any hard evidence that disabled
interrupts here are a problem, even though it seems obviously bad.
I used kprobes to confirm that I am indeed reaching this case, and
modified my original testcase to spam this scenario in a loop. But I
never encountered any instability or debug messages about interrupts.
Still, it also runs cleanly with this patch, and I think this is more
correct. Please correct me if I'm wrong!
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
> Signed-off-by: Josh Stone <jistone@redhat.com>
> ---
> arch/arm/kernel/entry-common.S | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
> index 4e7f40c577e6..5d8eb11b8571 100644
> --- a/arch/arm/kernel/entry-common.S
> +++ b/arch/arm/kernel/entry-common.S
> @@ -35,7 +35,7 @@ ret_fast_syscall:
> disable_irq @ disable interrupts
> ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
> tst r1, #_TIF_SYSCALL_WORK
> - bne __sys_trace_return
> + bne ret_fast_syscall_trace
> tst r1, #_TIF_WORK_MASK
> bne fast_work_pending
> asm_trace_hardirqs_on
> @@ -45,6 +45,10 @@ ret_fast_syscall:
> ct_user_enter
>
> restore_user_regs fast = 1, offset = S_OFF
> +
> +ret_fast_syscall_trace:
> + enable_irq @ enable interrupts
> + b __sys_trace_return
> UNWIND(.fnend )
>
> /*
>
prev parent reply other threads:[~2015-06-23 0:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-14 19:13 arm syscall fast path can miss a ptrace syscall-exit Josh Stone
2015-05-14 19:35 ` Russell King - ARM Linux
2015-05-14 21:08 ` Josh Stone
2015-05-26 22:38 ` Josh Stone
2015-05-28 10:37 ` Russell King - ARM Linux
2015-05-29 20:13 ` Josh Stone
2015-06-01 10:24 ` Will Deacon
2015-06-03 1:01 ` [PATCH] arm64: fix missing syscall trace exit Josh Stone
2015-06-03 1:11 ` Josh Stone
2015-06-03 9:52 ` Will Deacon
2015-06-03 20:03 ` Josh Stone
2015-06-04 10:06 ` Russell King - ARM Linux
2015-06-04 17:14 ` Josh Stone
2015-06-04 23:17 ` Josh Stone
2015-06-05 15:38 ` Will Deacon
2015-06-05 17:52 ` Tom Lendacky
2015-06-05 21:28 ` Josh Stone
2015-06-08 10:21 ` Will Deacon
2015-06-08 16:37 ` Josh Stone
2015-06-08 16:43 ` Catalin Marinas
2015-06-23 0:08 ` [PATCH] ARM: enable_irq before ret_fast_syscall tracing Josh Stone
2015-06-23 0:15 ` Josh Stone [this message]
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=5588A51A.1080008@redhat.com \
--to=jistone@redhat.com \
--cc=linux-arm-kernel@lists.infradead.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: link
Be 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.