mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Helge Deller <deller@gmx.de>
To: Arnd Bergmann <arnd@kernel.org>,
	linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Arnd Bergmann <arnd@arndb.de>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	Andreas Larsson <andreas@gaisler.com>,
	sparclinux@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	"Naveen N . Rao" <naveen.n.rao@linux.ibm.com>,
	linuxppc-dev@lists.ozlabs.org, Brian Cain <bcain@quicinc.com>,
	linux-hexagon@vger.kernel.org, Guo Ren <guoren@kernel.org>,
	linux-csky@vger.kernel.org, Heiko Carstens <hca@linux.ibm.com>,
	linux-s390@vger.kernel.org, Rich Felker <dalias@libc.org>,
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
	linux-sh@vger.kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	linux-fsdevel@vger.kernel.org, libc-alpha@sourceware.org,
	musl@lists.openwall.com, ltp@lists.linux.it,
	Adhemerval Zanella <adhemerval.zanella@linaro.org>
Subject: [musl] Re: [PATCH 07/15] parisc: use generic sys_fanotify_mark implementation
Date: Thu, 20 Jun 2024 23:21:58 +0200	[thread overview]
Message-ID: <e80809ba-ee81-47a5-9b08-54b11f118a78@gmx.de> (raw)
In-Reply-To: <20240620162316.3674955-8-arnd@kernel.org>

On 6/20/24 18:23, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The sys_fanotify_mark() syscall on parisc uses the reverse word order
> for the two halves of the 64-bit argument compared to all syscalls on
> all 32-bit architectures. As far as I can tell, the problem is that
> the function arguments on parisc are sorted backwards (26, 25, 24, 23,
> ...) compared to everyone else,

r26 is arg0, r25 is arg1, and so on.
I'm not sure I would call this "sorted backwards".
I think the reason is simply that hppa is the only 32-bit big-endian
arch left...

> so the calling conventions of using an
> even/odd register pair in native word order result in the lower word
> coming first in function arguments, matching the expected behavior
> on little-endian architectures. The system call conventions however
> ended up matching what the other 32-bit architectures do.
>
> A glibc cleanup in 2020 changed the userspace behavior in a way that
> handles all architectures consistently, but this inadvertently broke
> parisc32 by changing to the same method as everyone else.

I appreciate such cleanups to make arches consistent.
But it's bad if breakages aren't noticed or reported then...

> The change made it into glibc-2.35 and subsequently into debian 12
> (bookworm), which is the latest stable release. This means we
> need to choose between reverting the glibc change or changing the
> kernel to match it again, but either hange will leave some systems
> broken.
>
> Pick the option that is more likely to help current and future
> users and change the kernel to match current glibc.

Agreed (assuming we have really a problem on parisc).

> This also
> means the behavior is now consistent across architectures, but
> it breaks running new kernels with old glibc builds before 2.35.
>
> Link: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=d150181d73d9
> Link: https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/arch/parisc/kernel/sys_parisc.c?h=57b1dfbd5b4a39d
> Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> I found this through code inspection, please double-check to make
> sure I got the bug and the fix right.

The patch looks good at first sight.
I'll pick it up in my parisc git tree and will do some testing the
next few days and then push forward for 6.11 when it opens....

Thank you!!

Helge

> The alternative is to fix this by reverting glibc back to the
> unusual behavior.
> ---
>   arch/parisc/Kconfig                     | 1 +
>   arch/parisc/kernel/sys_parisc32.c       | 9 ---------
>   arch/parisc/kernel/syscalls/syscall.tbl | 2 +-
>   3 files changed, 2 insertions(+), 10 deletions(-)
>
> diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
> index daafeb20f993..dc9b902de8ea 100644
> --- a/arch/parisc/Kconfig
> +++ b/arch/parisc/Kconfig
> @@ -16,6 +16,7 @@ config PARISC
>   	select ARCH_HAS_UBSAN
>   	select ARCH_HAS_PTE_SPECIAL
>   	select ARCH_NO_SG_CHAIN
> +	select ARCH_SPLIT_ARG64 if !64BIT
>   	select ARCH_SUPPORTS_HUGETLBFS if PA20
>   	select ARCH_SUPPORTS_MEMORY_FAILURE
>   	select ARCH_STACKWALK
> diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
> index 2a12a547b447..826c8e51b585 100644
> --- a/arch/parisc/kernel/sys_parisc32.c
> +++ b/arch/parisc/kernel/sys_parisc32.c
> @@ -23,12 +23,3 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
>       	current->comm, current->pid, r20);
>       return -ENOSYS;
>   }
> -
> -asmlinkage long sys32_fanotify_mark(compat_int_t fanotify_fd, compat_uint_t flags,
> -	compat_uint_t mask0, compat_uint_t mask1, compat_int_t dfd,
> -	const char  __user * pathname)
> -{
> -	return sys_fanotify_mark(fanotify_fd, flags,
> -			((__u64)mask1 << 32) | mask0,
> -			 dfd, pathname);
> -}
> diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl
> index 39e67fab7515..66dc406b12e4 100644
> --- a/arch/parisc/kernel/syscalls/syscall.tbl
> +++ b/arch/parisc/kernel/syscalls/syscall.tbl
> @@ -364,7 +364,7 @@
>   320	common	accept4			sys_accept4
>   321	common	prlimit64		sys_prlimit64
>   322	common	fanotify_init		sys_fanotify_init
> -323	common	fanotify_mark		sys_fanotify_mark		sys32_fanotify_mark
> +323	common	fanotify_mark		sys_fanotify_mark		compat_sys_fanotify_mark
>   324	32	clock_adjtime		sys_clock_adjtime32
>   324	64	clock_adjtime		sys_clock_adjtime
>   325	common	name_to_handle_at	sys_name_to_handle_at


  reply	other threads:[~2024-06-20 22:13 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-20 16:23 [musl] [PATCH 00/15] linux system call fixes Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 01/15] ftruncate: pass a signed offset Arnd Bergmann
2024-06-21  7:47   ` [musl] " Christian Brauner
2024-06-20 16:23 ` [musl] [PATCH 02/15] syscalls: fix compat_sys_io_pgetevents_time64 usage Arnd Bergmann
2024-06-21 14:19   ` [musl] " Heiko Carstens
2024-06-24 12:52   ` Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 03/15] mips: fix compat_sys_lseek syscall Arnd Bergmann
2024-06-21  8:25   ` [musl] " Thomas Bogendoerfer
2024-06-20 16:23 ` [musl] [PATCH 04/15] sparc: fix old compat_sys_select() Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 05/15] sparc: fix compat recv/recvfrom syscalls Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 06/15] parisc: use correct " Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 07/15] parisc: use generic sys_fanotify_mark implementation Arnd Bergmann
2024-06-20 21:21   ` Helge Deller [this message]
2024-06-21  5:26     ` [musl] " LEROY Christophe
2024-06-21  6:28       ` Arnd Bergmann
2024-06-21  8:54         ` John Paul Adrian Glaubitz
2024-06-21 12:22           ` John David Anglin
2024-06-21  8:52     ` John Paul Adrian Glaubitz
2024-06-21  8:56       ` Arnd Bergmann
2024-06-21  9:03         ` John Paul Adrian Glaubitz
2024-06-21  9:52           ` Arnd Bergmann
2024-06-21 16:28             ` Helge Deller
2024-06-20 16:23 ` [musl] [PATCH 08/15] powerpc: restore some missing spu syscalls Arnd Bergmann
2024-06-24  2:23   ` [musl] " Michael Ellerman
2024-06-20 16:23 ` [musl] [PATCH 09/15] sh: rework sync_file_range ABI Arnd Bergmann
2024-06-21  8:44   ` [musl] " John Paul Adrian Glaubitz
2024-06-21  9:41     ` Arnd Bergmann
2024-06-24  6:14       ` John Paul Adrian Glaubitz
2024-06-24 12:49         ` Arnd Bergmann
2024-06-21 19:57     ` Rich Felker
2024-06-20 16:23 ` [musl] [PATCH 10/15] csky, hexagon: fix broken sys_sync_file_range Arnd Bergmann
2024-06-23 17:10   ` [musl] " Guo Ren
2024-06-20 16:23 ` [musl] [PATCH 11/15] hexagon: fix fadvise64_64 calling conventions Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 12/15] s390: remove native mmap2() syscall Arnd Bergmann
2024-06-21 14:17   ` [musl] " Heiko Carstens
2024-06-20 16:23 ` [musl] [PATCH 13/15] syscalls: mmap(): use unsigned offset type consistently Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 14/15] asm-generic: unistd: fix time32 compat syscall handling Arnd Bergmann
2024-06-24 12:36   ` [musl] " Arnd Bergmann
2024-06-20 16:23 ` [musl] [PATCH 15/15] linux/syscalls.h: add missing __user annotations Arnd Bergmann

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=e80809ba-ee81-47a5-9b08-54b11f118a78@gmx.de \
    --to=deller@gmx.de \
    --cc=adhemerval.zanella@linaro.org \
    --cc=andreas@gaisler.com \
    --cc=arnd@arndb.de \
    --cc=arnd@kernel.org \
    --cc=bcain@quicinc.com \
    --cc=brauner@kernel.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=dalias@libc.org \
    --cc=davem@davemloft.net \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=guoren@kernel.org \
    --cc=hca@linux.ibm.com \
    --cc=hpa@zytor.com \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=ltp@lists.linux.it \
    --cc=mpe@ellerman.id.au \
    --cc=musl@lists.openwall.com \
    --cc=naveen.n.rao@linux.ibm.com \
    --cc=npiggin@gmail.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tsbogend@alpha.franken.de \
    --cc=viro@zeniv.linux.org.uk \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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).