Message ID | 20240523121149.575616-3-jolsa@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | uprobe: uretprobe speed up | expand |
On Thu, 23 May 2024 14:11:42 +0200 Jiri Olsa <jolsa@kernel.org> wrote: > Wiring up uretprobe system call, which comes in following changes. > We need to do the wiring before, because the uretprobe implementation > needs the syscall number. > > Note at the moment uretprobe syscall is supported only for native > 64-bit process. > BTW, this does not cleanly applied to probes/for-next, based on 6.10-rc1. Which version did you use? Thank you, > Reviewed-by: Oleg Nesterov <oleg@redhat.com> > Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> > Acked-by: Andrii Nakryiko <andrii@kernel.org> > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > --- > arch/x86/entry/syscalls/syscall_64.tbl | 1 + > include/linux/syscalls.h | 2 ++ > include/uapi/asm-generic/unistd.h | 5 ++++- > kernel/sys_ni.c | 2 ++ > 4 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl > index cc78226ffc35..47dfea0a827c 100644 > --- a/arch/x86/entry/syscalls/syscall_64.tbl > +++ b/arch/x86/entry/syscalls/syscall_64.tbl > @@ -383,6 +383,7 @@ > 459 common lsm_get_self_attr sys_lsm_get_self_attr > 460 common lsm_set_self_attr sys_lsm_set_self_attr > 461 common lsm_list_modules sys_lsm_list_modules > +462 64 uretprobe sys_uretprobe > > # > # Due to a historical design error, certain syscalls are numbered differently > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index e619ac10cd23..5318e0e76799 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -972,6 +972,8 @@ asmlinkage long sys_lsm_list_modules(u64 *ids, u32 *size, u32 flags); > /* x86 */ > asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int on); > > +asmlinkage long sys_uretprobe(void); > + > /* pciconfig: alpha, arm, arm64, ia64, sparc */ > asmlinkage long sys_pciconfig_read(unsigned long bus, unsigned long dfn, > unsigned long off, unsigned long len, > diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h > index 75f00965ab15..8a747cd1d735 100644 > --- a/include/uapi/asm-generic/unistd.h > +++ b/include/uapi/asm-generic/unistd.h > @@ -842,8 +842,11 @@ __SYSCALL(__NR_lsm_set_self_attr, sys_lsm_set_self_attr) > #define __NR_lsm_list_modules 461 > __SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules) > > +#define __NR_uretprobe 462 > +__SYSCALL(__NR_uretprobe, sys_uretprobe) > + > #undef __NR_syscalls > -#define __NR_syscalls 462 > +#define __NR_syscalls 463 > > /* > * 32 bit systems traditionally used different > diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c > index faad00cce269..be6195e0d078 100644 > --- a/kernel/sys_ni.c > +++ b/kernel/sys_ni.c > @@ -391,3 +391,5 @@ COND_SYSCALL(setuid16); > > /* restartable sequence */ > COND_SYSCALL(rseq); > + > +COND_SYSCALL(uretprobe); > -- > 2.45.1 >
On Tue, Jun 11, 2024 at 07:05:21AM +0900, Masami Hiramatsu wrote: > On Thu, 23 May 2024 14:11:42 +0200 > Jiri Olsa <jolsa@kernel.org> wrote: > > > Wiring up uretprobe system call, which comes in following changes. > > We need to do the wiring before, because the uretprobe implementation > > needs the syscall number. > > > > Note at the moment uretprobe syscall is supported only for native > > 64-bit process. > > > > BTW, this does not cleanly applied to probes/for-next, based on > 6.10-rc1. Which version did you use? ah new syscall just got merged, I'll rebase and send new version jirka > > Thank you, > > > Reviewed-by: Oleg Nesterov <oleg@redhat.com> > > Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> > > Acked-by: Andrii Nakryiko <andrii@kernel.org> > > Signed-off-by: Jiri Olsa <jolsa@kernel.org> > > --- > > arch/x86/entry/syscalls/syscall_64.tbl | 1 + > > include/linux/syscalls.h | 2 ++ > > include/uapi/asm-generic/unistd.h | 5 ++++- > > kernel/sys_ni.c | 2 ++ > > 4 files changed, 9 insertions(+), 1 deletion(-) > > > > diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl > > index cc78226ffc35..47dfea0a827c 100644 > > --- a/arch/x86/entry/syscalls/syscall_64.tbl > > +++ b/arch/x86/entry/syscalls/syscall_64.tbl > > @@ -383,6 +383,7 @@ > > 459 common lsm_get_self_attr sys_lsm_get_self_attr > > 460 common lsm_set_self_attr sys_lsm_set_self_attr > > 461 common lsm_list_modules sys_lsm_list_modules > > +462 64 uretprobe sys_uretprobe > > > > # > > # Due to a historical design error, certain syscalls are numbered differently > > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > > index e619ac10cd23..5318e0e76799 100644 > > --- a/include/linux/syscalls.h > > +++ b/include/linux/syscalls.h > > @@ -972,6 +972,8 @@ asmlinkage long sys_lsm_list_modules(u64 *ids, u32 *size, u32 flags); > > /* x86 */ > > asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int on); > > > > +asmlinkage long sys_uretprobe(void); > > + > > /* pciconfig: alpha, arm, arm64, ia64, sparc */ > > asmlinkage long sys_pciconfig_read(unsigned long bus, unsigned long dfn, > > unsigned long off, unsigned long len, > > diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h > > index 75f00965ab15..8a747cd1d735 100644 > > --- a/include/uapi/asm-generic/unistd.h > > +++ b/include/uapi/asm-generic/unistd.h > > @@ -842,8 +842,11 @@ __SYSCALL(__NR_lsm_set_self_attr, sys_lsm_set_self_attr) > > #define __NR_lsm_list_modules 461 > > __SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules) > > > > +#define __NR_uretprobe 462 > > +__SYSCALL(__NR_uretprobe, sys_uretprobe) > > + > > #undef __NR_syscalls > > -#define __NR_syscalls 462 > > +#define __NR_syscalls 463 > > > > /* > > * 32 bit systems traditionally used different > > diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c > > index faad00cce269..be6195e0d078 100644 > > --- a/kernel/sys_ni.c > > +++ b/kernel/sys_ni.c > > @@ -391,3 +391,5 @@ COND_SYSCALL(setuid16); > > > > /* restartable sequence */ > > COND_SYSCALL(rseq); > > + > > +COND_SYSCALL(uretprobe); > > -- > > 2.45.1 > > > > > -- > Masami Hiramatsu (Google) <mhiramat@kernel.org>
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl index cc78226ffc35..47dfea0a827c 100644 --- a/arch/x86/entry/syscalls/syscall_64.tbl +++ b/arch/x86/entry/syscalls/syscall_64.tbl @@ -383,6 +383,7 @@ 459 common lsm_get_self_attr sys_lsm_get_self_attr 460 common lsm_set_self_attr sys_lsm_set_self_attr 461 common lsm_list_modules sys_lsm_list_modules +462 64 uretprobe sys_uretprobe # # Due to a historical design error, certain syscalls are numbered differently diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index e619ac10cd23..5318e0e76799 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -972,6 +972,8 @@ asmlinkage long sys_lsm_list_modules(u64 *ids, u32 *size, u32 flags); /* x86 */ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int on); +asmlinkage long sys_uretprobe(void); + /* pciconfig: alpha, arm, arm64, ia64, sparc */ asmlinkage long sys_pciconfig_read(unsigned long bus, unsigned long dfn, unsigned long off, unsigned long len, diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h index 75f00965ab15..8a747cd1d735 100644 --- a/include/uapi/asm-generic/unistd.h +++ b/include/uapi/asm-generic/unistd.h @@ -842,8 +842,11 @@ __SYSCALL(__NR_lsm_set_self_attr, sys_lsm_set_self_attr) #define __NR_lsm_list_modules 461 __SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules) +#define __NR_uretprobe 462 +__SYSCALL(__NR_uretprobe, sys_uretprobe) + #undef __NR_syscalls -#define __NR_syscalls 462 +#define __NR_syscalls 463 /* * 32 bit systems traditionally used different diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index faad00cce269..be6195e0d078 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -391,3 +391,5 @@ COND_SYSCALL(setuid16); /* restartable sequence */ COND_SYSCALL(rseq); + +COND_SYSCALL(uretprobe);