lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240802181437.29b439e26608561f1289892a@kernel.org>
Date: Fri, 2 Aug 2024 18:14:37 +0900
From: Masami Hiramatsu (Google) <mhiramat@...nel.org>
To: Arnd Bergmann <arnd@...nel.org>
Cc: Andy Lutomirski <luto@...nel.org>, Thomas Gleixner <tglx@...utronix.de>,
 Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>, Dave Hansen
 <dave.hansen@...ux.intel.com>, x86@...nel.org, Arnd Bergmann
 <arnd@...db.de>, Jiri Olsa <jolsa@...nel.org>, Linus Torvalds
 <torvalds@...ux-foundation.org>, "H. Peter Anvin" <hpa@...or.com>, Palmer
 Dabbelt <palmer@...belt.com>, Guo Ren <guoren@...nel.org>, Geert
 Uytterhoeven <geert@...ux-m68k.org>, "Masami Hiramatsu (Google)"
 <mhiramat@...nel.org>, Kees Cook <kees@...nel.org>, "peterz@...radead.org"
 <peterz@...radead.org>, "H.J. Lu" <hjl.tools@...il.com>, Sohil Mehta
 <sohil.mehta@...el.com>, Oleg Nesterov <oleg@...hat.com>, Andrii Nakryiko
 <andrii@...nel.org>, linux-kernel@...r.kernel.org,
 linux-arch@...r.kernel.org, linux-riscv@...ts.infradead.org
Subject: Re: [RFC] uretprobe: change syscall number, again

On Tue, 30 Jul 2024 17:43:36 +0200
Arnd Bergmann <arnd@...nel.org> wrote:

> From: Arnd Bergmann <arnd@...db.de>
> 
> Despite multiple attempts to get the syscall number assignment right
> for the newly added uretprobe syscall, we ended up with a bit of a mess:
> 
>  - The number is defined as 467 based on the assumption that the
>    xattrat family of syscalls would use 463 through 466, but those
>    did not make it into 6.11.

OK... that was not expected.

> 
>  - The include/uapi/asm-generic/unistd.h file still lists the number
>    463, but the new scripts/syscall.tbl that was supposed to have the
>    same data lists 467 instead as the number for arc, arm64, csky,
>    hexagon, loongarch, nios2, openrisc and riscv. None of these
>    architectures actually provide a uretprobe syscall.

Oops, thanks for finding.

> 
>  - All the other architectures (powerpc, arm, mips, ...) don't list
>    this syscall at all.

OK, so even if it is not supported on those, we need to put it as a
placeholder.

> 
> There are two ways to make it consistent again: either list it with
> the same syscall number on all architectures, or only list it on x86
> but not in scripts/syscall.tbl and asm-generic/unistd.h.
> 
> Based on the most recent discussion, it seems like we won't need it
> anywhere else, so just remove the inconsistent assignment and instead
> move the x86 number to the next available one in the architecture
> specific range, which is 335.
> 
> Fixes: 5c28424e9a34 ("syscalls: Fix to add sys_uretprobe to syscall.tbl")
> Fixes: 190fec72df4a ("uprobe: Wire up uretprobe system call")
> Fixes: 63ded110979b ("uprobe: Change uretprobe syscall scope and number")
> Cc: Linus Torvalds <torvalds@...ux-foundation.org>
> Signed-off-by: Arnd Bergmann <arnd@...db.de>
> ---
> I think we should fix this as soon as possible. Please let me know if
> you agree on this approach, or prefer one of the alternatives.

OK, I think it is good. But you missed to fix a selftest code which
also needs to be updated.

Could you revert commit 3e301b431b91 ("selftests/bpf: Change uretprobe
 syscall number in uprobe_syscall test") too?

Acked-by: Masami Hiramatsu (Google) <mhiramat@...nel.org>

Thank you,

> 
> I've queued up this version in the asm-generic tree so I can send a
> pull request in the next few days, but I'm fine with doing this a
> differently if someone has a stronger opinion on what numbers to
> assign for it on earch architecture.
> 
>  arch/x86/entry/syscalls/syscall_64.tbl | 2 +-
>  include/uapi/asm-generic/unistd.h      | 5 +----
>  scripts/syscall.tbl                    | 1 -
>  3 files changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
> index 83073fa3c989..7093ee21c0d1 100644
> --- a/arch/x86/entry/syscalls/syscall_64.tbl
> +++ b/arch/x86/entry/syscalls/syscall_64.tbl
> @@ -344,6 +344,7 @@
>  332	common	statx			sys_statx
>  333	common	io_pgetevents		sys_io_pgetevents
>  334	common	rseq			sys_rseq
> +335	common	uretprobe		sys_uretprobe
>  # don't use numbers 387 through 423, add new calls after the last
>  # 'common' entry
>  424	common	pidfd_send_signal	sys_pidfd_send_signal
> @@ -385,7 +386,6 @@
>  460	common	lsm_set_self_attr	sys_lsm_set_self_attr
>  461	common	lsm_list_modules	sys_lsm_list_modules
>  462 	common  mseal			sys_mseal
> -467	common	uretprobe		sys_uretprobe
>  
>  #
>  # Due to a historical design error, certain syscalls are numbered differently
> diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
> index 985a262d0f9e..5bf6148cac2b 100644
> --- a/include/uapi/asm-generic/unistd.h
> +++ b/include/uapi/asm-generic/unistd.h
> @@ -841,11 +841,8 @@ __SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules)
>  #define __NR_mseal 462
>  __SYSCALL(__NR_mseal, sys_mseal)
>  
> -#define __NR_uretprobe 463
> -__SYSCALL(__NR_uretprobe, sys_uretprobe)
> -
>  #undef __NR_syscalls
> -#define __NR_syscalls 464
> +#define __NR_syscalls 463
>  
>  /*
>   * 32 bit systems traditionally used different
> diff --git a/scripts/syscall.tbl b/scripts/syscall.tbl
> index 591d85e8ca7e..797e20ea99a2 100644
> --- a/scripts/syscall.tbl
> +++ b/scripts/syscall.tbl
> @@ -402,4 +402,3 @@
>  460	common	lsm_set_self_attr		sys_lsm_set_self_attr
>  461	common	lsm_list_modules		sys_lsm_list_modules
>  462	common	mseal				sys_mseal
> -467	common	uretprobe			sys_uretprobe
> -- 
> 2.39.2
> 


-- 
Masami Hiramatsu (Google) <mhiramat@...nel.org>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ