From: Russell King - ARM Linux <linux@arm.linux.org.uk> To: Roman Peniaev <r.peniaev@gmail.com> Cc: Kees Cook <keescook@chromium.org>, Will Deacon <will.deacon@arm.com>, Stefano Stabellini <stefano.stabellini@eu.citrix.com>, Marc Zyngier <Marc.Zyngier@arm.com>, Catalin Marinas <Catalin.Marinas@arm.com>, Sekhar Nori <nsekhar@ti.com>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "stable@vger.kernel.org" <stable@vger.kernel.org>, Christoffer Dall <christoffer.dall@linaro.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH 1/2] ARM: entry-common: fix forgotten set of thread_info->syscall Date: Fri, 16 Jan 2015 16:17:52 +0000 [thread overview] Message-ID: <20150116161752.GL12302@n2100.arm.linux.org.uk> (raw) In-Reply-To: <CACZ9PQUVFtCQg6XjDbokEPy_R2fZcHiq6+EEUZnx4FVfpfZxJg@mail.gmail.com> On Sat, Jan 17, 2015 at 01:08:11AM +0900, Roman Peniaev wrote: > On Sat, Jan 17, 2015 at 12:59 AM, Russell King - ARM Linux > <linux@arm.linux.org.uk> wrote: > > On Sat, Jan 17, 2015 at 12:57:02AM +0900, Roman Peniaev wrote: > >> On Fri, Jan 16, 2015 at 7:54 AM, Kees Cook <keescook@chromium.org> wrote: > >> > One interesting thing I noticed (which is unchanged by this series), > >> > but pulling ARM_r7 during the seccomp ptrace event shows __NR_poll, > >> > not __NR_restart_syscall, even though it was a __NR_restart_syscall > >> > trap from seccomp. Is there a better place to see the actual syscall? > >> > >> As I understand we do not push new r7 to the stack, and ptrace uses the > >> old value. > > > > And why should we push r7 to the stack? ptrace should be using the > > recorded system call number, rather than poking about on the stack > > itself. > > Probably we should not, but the behaviour comparing arm to x86 is different. We definitely should not, because changing the stacked value changes the value in r7 after the syscall has returned. We have guaranteed that the value will be preserved across syscalls for years, so we really should not be changing that. > Also there is no any way from userspace to figure out what syscall was > restarted, if you do not trace each syscall enter and exit from the > very beginning. Thinking about ptrace, that's been true for years. It really depends whether you consider the restart syscall a userspace thing or a kernelspace thing. When you consider that the vast majority of syscall restarts are done internally in the kernel, and we just re-issue the syscall, it immediately brings up the question "why is the restart block method different?" and "should the restart block method be visible to userspace?" IMHO, it is prudent not to expose kernel internals to userspace unless there is a real reason to, otherwise they become part of the userspace API. -- FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up according to speedtest.net.
WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/2] ARM: entry-common: fix forgotten set of thread_info->syscall Date: Fri, 16 Jan 2015 16:17:52 +0000 [thread overview] Message-ID: <20150116161752.GL12302@n2100.arm.linux.org.uk> (raw) In-Reply-To: <CACZ9PQUVFtCQg6XjDbokEPy_R2fZcHiq6+EEUZnx4FVfpfZxJg@mail.gmail.com> On Sat, Jan 17, 2015 at 01:08:11AM +0900, Roman Peniaev wrote: > On Sat, Jan 17, 2015 at 12:59 AM, Russell King - ARM Linux > <linux@arm.linux.org.uk> wrote: > > On Sat, Jan 17, 2015 at 12:57:02AM +0900, Roman Peniaev wrote: > >> On Fri, Jan 16, 2015 at 7:54 AM, Kees Cook <keescook@chromium.org> wrote: > >> > One interesting thing I noticed (which is unchanged by this series), > >> > but pulling ARM_r7 during the seccomp ptrace event shows __NR_poll, > >> > not __NR_restart_syscall, even though it was a __NR_restart_syscall > >> > trap from seccomp. Is there a better place to see the actual syscall? > >> > >> As I understand we do not push new r7 to the stack, and ptrace uses the > >> old value. > > > > And why should we push r7 to the stack? ptrace should be using the > > recorded system call number, rather than poking about on the stack > > itself. > > Probably we should not, but the behaviour comparing arm to x86 is different. We definitely should not, because changing the stacked value changes the value in r7 after the syscall has returned. We have guaranteed that the value will be preserved across syscalls for years, so we really should not be changing that. > Also there is no any way from userspace to figure out what syscall was > restarted, if you do not trace each syscall enter and exit from the > very beginning. Thinking about ptrace, that's been true for years. It really depends whether you consider the restart syscall a userspace thing or a kernelspace thing. When you consider that the vast majority of syscall restarts are done internally in the kernel, and we just re-issue the syscall, it immediately brings up the question "why is the restart block method different?" and "should the restart block method be visible to userspace?" IMHO, it is prudent not to expose kernel internals to userspace unless there is a real reason to, otherwise they become part of the userspace API. -- FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up according to speedtest.net.
next prev parent reply other threads:[~2015-01-16 16:18 UTC|newest] Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-01-11 14:32 [PATCH 0/2] ARM: set thread_info->syscall just before sys_* execution Roman Pen 2015-01-11 14:32 ` Roman Pen 2015-01-11 14:32 ` [PATCH 1/2] ARM: entry-common: fix forgotten set of thread_info->syscall Roman Pen 2015-01-11 14:32 ` Roman Pen 2015-01-12 18:39 ` Will Deacon 2015-01-12 18:39 ` Will Deacon 2015-01-12 18:39 ` Will Deacon 2015-01-13 8:35 ` Roman Peniaev 2015-01-13 8:35 ` Roman Peniaev 2015-01-13 8:35 ` Roman Peniaev 2015-01-14 2:23 ` Roman Peniaev 2015-01-14 2:23 ` Roman Peniaev 2015-01-14 2:23 ` Roman Peniaev 2015-01-14 20:51 ` Kees Cook 2015-01-14 20:51 ` Kees Cook 2015-01-14 20:51 ` Kees Cook 2015-01-15 1:54 ` Roman Peniaev 2015-01-15 1:54 ` Roman Peniaev 2015-01-15 1:54 ` Roman Peniaev 2015-01-15 22:54 ` Kees Cook 2015-01-15 22:54 ` Kees Cook 2015-01-15 22:54 ` Kees Cook 2015-01-16 15:57 ` Roman Peniaev 2015-01-16 15:57 ` Roman Peniaev 2015-01-16 15:57 ` Roman Peniaev 2015-01-16 15:59 ` Russell King - ARM Linux 2015-01-16 15:59 ` Russell King - ARM Linux 2015-01-16 15:59 ` Russell King - ARM Linux 2015-01-16 16:08 ` Roman Peniaev 2015-01-16 16:08 ` Roman Peniaev 2015-01-16 16:08 ` Roman Peniaev 2015-01-16 16:17 ` Russell King - ARM Linux [this message] 2015-01-16 16:17 ` Russell King - ARM Linux 2015-01-16 16:17 ` Russell King - ARM Linux 2015-01-16 19:57 ` Kees Cook 2015-01-16 19:57 ` Kees Cook 2015-01-16 19:57 ` Kees Cook 2015-01-16 23:54 ` Kees Cook 2015-01-16 23:54 ` Kees Cook 2015-01-16 23:54 ` Kees Cook 2015-01-19 5:58 ` Roman Peniaev 2015-01-19 5:58 ` Roman Peniaev 2015-01-19 5:58 ` Roman Peniaev 2015-01-20 18:56 ` Kees Cook 2015-01-20 18:56 ` Kees Cook 2015-01-20 18:56 ` Kees Cook 2015-01-19 9:20 ` Will Deacon 2015-01-19 9:20 ` Will Deacon 2015-01-19 9:20 ` Will Deacon 2015-01-20 18:31 ` Kees Cook 2015-01-20 18:31 ` Kees Cook 2015-01-20 18:31 ` Kees Cook 2015-01-20 22:45 ` Russell King - ARM Linux 2015-01-20 22:45 ` Russell King - ARM Linux 2015-01-20 22:45 ` Russell King - ARM Linux 2015-01-20 23:04 ` Russell King - ARM Linux 2015-01-20 23:04 ` Russell King - ARM Linux 2015-01-20 23:04 ` Russell King - ARM Linux 2015-01-21 23:32 ` Kees Cook 2015-01-21 23:32 ` Kees Cook 2015-01-21 23:32 ` Kees Cook 2015-01-22 1:24 ` Roman Peniaev 2015-01-22 1:24 ` Roman Peniaev 2015-01-22 1:24 ` Roman Peniaev 2015-01-22 18:07 ` Kees Cook 2015-01-22 18:07 ` Kees Cook 2015-01-22 18:07 ` Kees Cook 2015-01-23 4:17 ` Roman Peniaev 2015-01-23 4:17 ` Roman Peniaev 2015-01-23 4:17 ` Roman Peniaev 2015-01-11 14:32 ` [PATCH 2/2] ARM: entry-common,ptrace: do not pass scno to syscall_trace_enter Roman Pen 2015-01-11 14:32 ` [PATCH 2/2] ARM: entry-common, ptrace: " Roman Pen 2015-01-13 20:08 ` [PATCH 2/2] ARM: entry-common,ptrace: " Kees Cook 2015-01-13 20:08 ` [PATCH 2/2] ARM: entry-common, ptrace: " Kees Cook 2015-01-13 23:21 ` [PATCH 2/2] ARM: entry-common,ptrace: " Roman Peniaev 2015-01-13 23:21 ` [PATCH 2/2] ARM: entry-common, ptrace: " Roman Peniaev 2015-01-13 23:43 ` [PATCH 2/2] ARM: entry-common,ptrace: " Kees Cook 2015-01-13 23:43 ` [PATCH 2/2] ARM: entry-common, ptrace: " Kees Cook
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=20150116161752.GL12302@n2100.arm.linux.org.uk \ --to=linux@arm.linux.org.uk \ --cc=Catalin.Marinas@arm.com \ --cc=Marc.Zyngier@arm.com \ --cc=christoffer.dall@linaro.org \ --cc=keescook@chromium.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=nsekhar@ti.com \ --cc=r.peniaev@gmail.com \ --cc=stable@vger.kernel.org \ --cc=stefano.stabellini@eu.citrix.com \ --cc=will.deacon@arm.com \ /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.