From: Dave Martin <Dave.Martin@arm.com>
To: Keno Fischer <keno@juliacomputing.com>
Cc: Kyle Huey <khuey@pernos.co>,
Catalin Marinas <catalin.marinas@arm.com>,
Oleg Nesterov <oleg@redhat.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: arm64: Register modification during syscall entry/exit stop
Date: Mon, 1 Jun 2020 10:59:25 +0100 [thread overview]
Message-ID: <20200601095925.GZ5031@arm.com> (raw)
In-Reply-To: <CABV8kRzkLiVuqxT3+8c1o8m_OuROtXgfowQcrMVnrxu=CiGB=w@mail.gmail.com>
On Mon, Jun 01, 2020 at 05:40:28AM -0400, Keno Fischer wrote:
> On Mon, Jun 1, 2020 at 5:23 AM Dave Martin <Dave.Martin@arm.com> wrote:
> > > > Can't PTRACE_SYSEMU be emulated by using PTRACE_SYSCALL, cancelling the
> > > > syscall at the syscall enter stop, then modifying the regs at the
> > > > syscall exit stop?
> > >
> > > Yes, it can. The idea behind SYSEMU is to be able to save half the
> > > ptrace traps that would require, in theory making the ptracer
> > > a decent amount faster. That said, the x7 issue is orthogonal to
> > > SYSEMU, you'd have the same issues if you used PTRACE_SYSCALL.
> >
> > Right, I just wondered whether there was some deeper difference between
> > the two approaches.
>
> You're asking about a new regset vs trying to do it via ptrace option?
I meant SYSEMU versus SYSCALL + cancellation and emulating the syscall
at the syscall exit stop.
i.e., I was trying to understand whether SYSEMU is just a convenience,
or does some magic that can't be reproduced by other means.
> I don't think there's anything a ptrace option can do that a new regset
> that replicates the same registers (I'm gonna propose adding orig_x0,
> while we're at it and changing the x0 semantics a bit, will have
> those details with the patch) wouldn't be able to do . The reason I
> originally thought it might have to be a ptrace option is because
> the register modification currently gets applied in the syscall entry
> code to the actual regs struct, so I thought you might have to know
> to preserve those registers. However, then I realized that you could
> just change the regset accessors to emulate the old behavior, since
> we do already store all the required information (what kind of stop
> we're currently at) in order to be able to answer the ptrace
> informational queries. So doing that it probably just all around
> easier. I guess NT_PRSTATUS might also rot, but I guess strace
> doesn't really have to stop using it, since it doesn't care about
> the x7 value nor does it need to modify it.
I think NT_PRSTATUS probably doesn't need to change.
Having a duplicate regset feels like a worse outcome that having a new
ptrace option. Undocumentedly different things already happen to the
regs depending on how the tracee stopped, so adding a new special case
doesn't seem to justify creating a new regset.
Cheers
---Dave
prev parent reply other threads:[~2020-06-01 9:59 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 1:05 arm64: Register modification during syscall entry/exit stop Keno Fischer
2020-05-19 8:15 ` Will Deacon
2020-05-19 8:37 ` Keno Fischer
2020-05-20 17:41 ` Will Deacon
2020-05-23 5:35 ` Keno Fischer
2020-05-24 6:56 ` Keno Fischer
2020-05-27 9:55 ` Will Deacon
2020-05-27 10:19 ` Dave Martin
2020-05-31 9:33 ` Will Deacon
2020-05-31 16:13 ` Keno Fischer
2020-06-01 9:14 ` Dave Martin
2020-06-01 9:23 ` Keno Fischer
2020-06-01 9:52 ` Dave Martin
2020-05-31 16:20 ` Keno Fischer
2020-06-01 9:23 ` Dave Martin
2020-06-01 9:40 ` Keno Fischer
2020-06-01 9:59 ` Dave Martin [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=20200601095925.GZ5031@arm.com \
--to=dave.martin@arm.com \
--cc=catalin.marinas@arm.com \
--cc=keno@juliacomputing.com \
--cc=khuey@pernos.co \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=will@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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).