From patchwork Mon Jun 24 16:37:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 807049 Delivered-To: patch@linaro.org Received: by 2002:a5d:508d:0:b0:362:4979:7f74 with SMTP id a13csp1970051wrt; Mon, 24 Jun 2024 09:38:27 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXChdOXAUxeIs4ETRi7Na3Uisbc0MBWJsO+WZuaDIrZNveIPIjRvuAVETzhwKIHu3L/uWojBlzUhZirvP9LYzI7 X-Google-Smtp-Source: AGHT+IGIUU06HFXAH9UhWVUhMSPNISfaeZQvneCxTLelvfJGc5zHxGWRJqdj0rSHqkZ0UhKCgGfN X-Received: by 2002:a05:6808:2e9b:b0:3d1:fc44:2116 with SMTP id 5614622812f47-3d541c96747mr8161019b6e.35.1719247106847; Mon, 24 Jun 2024 09:38:26 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1719247106; cv=pass; d=google.com; s=arc-20160816; b=BB0vYaJYzis78r4ZRIULKl5CUya55wpKmH2Aga3pw6xu9A3xaCS5BJIAKhXKOGqEyq Ft4db5iPCKCRCZDXnSl3J7FA4pITepv+DdsZkRtnj0lFMK7Tag+0lzKAYpfLiNda9Wu/ yeTK7rhTBSl0Ny2pxtMinTOd1eQtJq76zZAag8U/Ho0HglDuy0kWvsA6AHeXqFrWa872 /+CU8WvMgKNSivjkqqapTSRcwpHdh4wC8rfHU5B/AHQfpP0BBzp27ayMZ7C5AN4lzrnW LqOxaKoMgeE77WHge2TMPTP+gl59MCg2NOWeO/UaRqtVeZo1mckzbfRTBdGXAsbClqCR XL1w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:arc-filter:dmarc-filter:delivered-to; bh=8+g1XBR65FHh0J+nFpMW8DiL/aDYZOHvLyJKvyku5wQ=; fh=Zm3ot/egTW/CR9CiAYb3Inuh4Hud7J5tvFtKX0HaOhA=; b=obKcgAoFHFdCnFgMlOk1psjrioOYw3tvIRRj0KLVoyPOcw+5w7OpznXsTNzbxYtnEI zcB6HLym6aPLzsjIhxpyKoNfGAuhPHlrjtVscN/vRdgmoestxN0B4+enlNi4LgV84NGW +kfoESl5xSAAhf9Jieil3Knf5iidFEnoCLo8Fs6MqdJo/jNg4uw8LOTdytQy300Lh0Mw bl2KxeEvXBehuNImin7dc4ruI3iHxWcrljyt9t1I3SBHZdv0z9kgP4sJxuiBXpHFmiCE R5M5OBcUB28WHCQkXDD30silS5fBtCHiXT2CziX6TbE/5wO1UdpX57obvlngqHuGctlj Panw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mLLSpMBD; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces+patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces+patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id d75a77b69052e-444c2c3e58asi85159591cf.522.2024.06.24.09.38.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Jun 2024 09:38:26 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-bounces+patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mLLSpMBD; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces+patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces+patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7521C384AB59 for ; Mon, 24 Jun 2024 16:38:26 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by sourceware.org (Postfix) with ESMTPS id E3EBA384B03F for ; Mon, 24 Jun 2024 16:37:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E3EBA384B03F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=kernel.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E3EBA384B03F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2604:1380:4641:c500::1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1719247082; cv=none; b=f8LIkdarZPYylG51U+XVTKaiWSPedpHHuk5txnCxhGFfNvTL+H6LJ9/yOfR239PzCdihMqPUfdooXbVTM0nXGvDEY7tPSiSqRIGSHTdhhnM0QeG7FeoKrf2xiy6NyppRcKNAd/B0ylIkUn7aQ2jSADl/oxkFTQ/oBzv5xIMvb2c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1719247082; c=relaxed/simple; bh=8BUhuvpYKY6Oen1UC5rJgJwiMSMDwiGi/6HUvcJ22qg=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=w7aLdZ6LqvXoTKOnUMfiJkSdBu+h9HztyOWskgAYu53rqIDS9jWRNQ2P5IO9EdPtr6L1O4b1Xj3XuLaLmNFpJvYgVx+x4Vnbwju2qalzpePsgwX3lhgnPk8nknlplhDt+HMWFaqXAuZigxjCaszig4rOGj09fkCU3kbi/o8ayWU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 8A8CC60DED; Mon, 24 Jun 2024 16:37:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 15735C32782; Mon, 24 Jun 2024 16:37:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1719247079; bh=8BUhuvpYKY6Oen1UC5rJgJwiMSMDwiGi/6HUvcJ22qg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mLLSpMBD4/Bmh6Woq7JbPe54sNNC2lv57KdGe0D1MbxaliKCB7IydEZ68Evm0tw9Z qDIXxvPefJwaQ9FDPjI6Ka98Mnq2d1pXc+mLr/irtwSmADwP2S5svWle/V7iqNevYt Y8yvGiUtSq9tm7sNVgPbGuuGNmUK10DCEsXI8VmwgRRd209Kw6CVbcl5MikdqPG7zw pocscEoU4Vl6BvDBBfIdosYvec1yJXBv/V4Ick349ZIf7RE3EhQMC7R8366iba6TLd C4oEsxdIB42EZIxBEAy6XhZ+ntaUpO4UlcjEkdGhl7d0z/nsQ1ZpN06b1N6+l7dm2L UjVQraQYeEJ5g== From: Arnd Bergmann To: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Thomas Bogendoerfer , linux-mips@vger.kernel.org, Helge Deller , linux-parisc@vger.kernel.org, "David S. Miller" , Andreas Larsson , sparclinux@vger.kernel.org, Michael Ellerman , Nicholas Piggin , Christophe Leroy , "Naveen N . Rao" , linuxppc-dev@lists.ozlabs.org, Brian Cain , linux-hexagon@vger.kernel.org, Guo Ren , linux-csky@vger.kernel.org, Heiko Carstens , linux-s390@vger.kernel.org, Rich Felker , John Paul Adrian Glaubitz , linux-sh@vger.kernel.org, "H. Peter Anvin" , Alexander Viro , Christian Brauner , linux-fsdevel@vger.kernel.org, libc-alpha@sourceware.org, musl@lists.openwall.com, Adhemerval Zanella Subject: [PATCH v2 06/13] parisc: use generic sys_fanotify_mark implementation Date: Mon, 24 Jun 2024 18:37:04 +0200 Message-Id: <20240624163707.299494-7-arnd@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240624163707.299494-1-arnd@kernel.org> References: <20240624163707.299494-1-arnd@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces+patch=linaro.org@sourceware.org From: Arnd Bergmann 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, 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. 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. 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 Tested-by: Helge Deller Acked-by: Helge Deller Signed-off-by: Arnd Bergmann --- I found this through code inspection, please double-check to make sure I got the bug and the fix right. 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