All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Jiri Olsa <olsajiri@gmail.com>, Oleg Nesterov <oleg@redhat.com>,
	Andrii Nakryiko <andrii.nakryiko@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>,
	linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	bpf@vger.kernel.org, Song Liu <songliubraving@fb.com>,
	Yonghong Song <yhs@fb.com>,
	John Fastabend <john.fastabend@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"Borislav Petkov (AMD)" <bp@alien8.de>,
	x86@kernel.org, linux-api@vger.kernel.org
Subject: Re: [PATCHv2 1/3] uprobe: Add uretprobe syscall to speed up return probe
Date: Tue, 9 Apr 2024 09:57:54 +0200	[thread overview]
Message-ID: <ZhT1AqFmo3jwOrzC@krava> (raw)
In-Reply-To: <20240409093439.3906e3783ab1f5280146934e@kernel.org>

On Tue, Apr 09, 2024 at 09:34:39AM +0900, Masami Hiramatsu wrote:

SNIP

> > > 
> > > > this can be fixed by checking the syscall is called from the trampoline
> > > > and prevent handle_trampoline call if it's not
> > > 
> > > Yes, but I still do not think this makes a lot of sense. But I won't argue.
> > > 
> > > And what should sys_uretprobe() do if it is not called from the trampoline?
> > > I'd prefer force_sig(SIGILL) to punish the abuser ;) OK, OK, EINVAL.
> > 
> > so the similar behaviour with int3 ends up with immediate SIGTRAP
> > and not invoking pending uretprobe consumers, like:
> > 
> >   - setup uretprobe for foo
> >   - foo() {
> >       executes int 3 -> sends SIGTRAP
> >     }
> > 
> > because the int3 handler checks if it got executed from the uretprobe's
> > trampoline.. if not it treats that int3 as regular trap
> 
> Yeah, that is consistent behavior. Sounds good to me.
> 
> > 
> > while for uretprobe syscall we have at the moment following behaviour:
> > 
> >   - setup uretprobe for foo
> >   - foo() {
> >      uretprobe_syscall -> executes foo's uretprobe consumers
> >     }
> >   - at some point we get to the 'ret' instruction that jump into uretprobe
> >     trampoline and the uretprobe_syscall won't find pending uretprobe and
> >     will send SIGILL
> > 
> > 
> > so I think we should mimic int3 behaviour and:
> > 
> >   - setup uretprobe for foo
> >   - foo() {
> >      uretprobe_syscall -> check if we got executed from uretprobe's
> >      trampoline and send SIGILL if that's not the case
> 
> OK, this looks good to me.
> 
> > 
> > I think it's better to have the offending process killed right away,
> > rather than having more undefined behaviour, waiting for final 'ret'
> > instruction that jumps to uretprobe trampoline and causes SIGILL
> > 
> > > 
> > > I agree very much with Andrii,
> > > 
> > >        sigreturn()  exists only to allow the implementation of signal handlers.  It should never be
> > >        called directly.  Details of the arguments (if any) passed to sigreturn() vary depending  on
> > >        the architecture.
> > > 
> > > this is how sys_uretprobe() should be treated/documented.
> > 
> > yes, will include man page patch in new version
> 
> And please follow Documentation/process/adding-syscalls.rst in new version,
> then we can avoid repeating the same discussion :-)

yep, will do

thanks,
jirka

  reply	other threads:[~2024-04-09  7:57 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-02  9:32 [PATCHv2 0/3] uprobe: uretprobe speed up Jiri Olsa
2024-04-02  9:33 ` [PATCHv2 1/3] uprobe: Add uretprobe syscall to speed up return probe Jiri Olsa
2024-04-03  1:07   ` Masami Hiramatsu
2024-04-03  9:47     ` Jiri Olsa
2024-04-03 13:56       ` Oleg Nesterov
2024-04-03 14:09       ` Masami Hiramatsu
2024-04-03 14:49         ` Oleg Nesterov
2024-04-03 16:58         ` Andrii Nakryiko
2024-04-04  0:58           ` Masami Hiramatsu
2024-04-04  2:00             ` Andrii Nakryiko
2024-04-04 11:58               ` Jiri Olsa
2024-04-04 16:06                 ` Masami Hiramatsu
2024-04-04 15:54               ` Masami Hiramatsu
2024-04-04 16:11                 ` Oleg Nesterov
2024-04-05  1:22                   ` Masami Hiramatsu
2024-04-05  8:56                     ` Jiri Olsa
2024-04-05 11:02                       ` Oleg Nesterov
2024-04-06  3:05                         ` Masami Hiramatsu
2024-04-06 17:55                           ` Oleg Nesterov
2024-04-08  3:54                             ` Masami Hiramatsu
2024-04-08 16:02                         ` Jiri Olsa
2024-04-08 16:22                           ` Oleg Nesterov
2024-04-09 12:06                             ` Jiri Olsa
2024-04-09  0:34                           ` Masami Hiramatsu
2024-04-09  7:57                             ` Jiri Olsa [this message]
2024-04-08  3:16                       ` Masami Hiramatsu
2024-04-15  8:25   ` Jiri Olsa
2024-04-18 18:34     ` Andrii Nakryiko
2024-04-02  9:33 ` [PATCHv2 bpf-next 2/3] selftests/bpf: Add uretprobe test for regs integrity Jiri Olsa
2024-04-02  9:33 ` [PATCHv2 bpf-next 3/3] selftests/bpf: Add uretprobe test for regs changes Jiri Olsa

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=ZhT1AqFmo3jwOrzC@krava \
    --to=olsajiri@gmail.com \
    --cc=andrii.nakryiko@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bp@alien8.de \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=john.fastabend@gmail.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=songliubraving@fb.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yhs@fb.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: 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.