git: 245d95ce16f3 - releng/15.0 - sys/arm64: fix COMPAT_FREEBSD32 __syscall()

From: Colin Percival <cperciva_at_FreeBSD.org>
Date: Thu, 30 Oct 2025 04:23:32 UTC
The branch releng/15.0 has been updated by cperciva:

URL: https://cgit.FreeBSD.org/src/commit/?id=245d95ce16f366ebffaef3cdec938fa575979b68

commit 245d95ce16f366ebffaef3cdec938fa575979b68
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2025-10-21 21:35:24 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2025-10-30 04:22:09 +0000

    sys/arm64: fix COMPAT_FREEBSD32 __syscall()
    
    It seems like _QUAD_LOWWORD was incorrectly expanded into 1,
    which is correct for big endian but not little endian.  This
    means we always grab the padding word for the syscall number,
    which is usually 0, causing SIGSYS to be delivered to the caller.
    Reintroduce _QUAD_LOWWORD to fix the syscall.
    
    Approved by:    re (cperciva)
    PR:             290411
    MFC after:      1 week
    Discussed with: jrtc27
    Reviewed by:    cognet, emaste
    Approved by:    markj (mentor)
    Fixes:          8c9c3144ccfa3061879b8cec015ee7d1010e4766
    Differential Revision:  https://reviews.freebsd.org/D53250
    
    (cherry picked from commit 1ca09538d94273601dac08204c1d0b3ca9115864)
    (cherry picked from commit c824960b89af082e5f083c0c4f141965d203eaa1)
---
 sys/arm64/arm64/elf32_machdep.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/arm64/arm64/elf32_machdep.c b/sys/arm64/arm64/elf32_machdep.c
index 8f8a934ad520..4cb8ee5f57ef 100644
--- a/sys/arm64/arm64/elf32_machdep.c
+++ b/sys/arm64/arm64/elf32_machdep.c
@@ -210,7 +210,7 @@ freebsd32_fetch_syscall_args(struct thread *td)
 		sa->code = *ap++;
 		nap--;
 	} else if (sa->code == SYS___syscall) {
-		sa->code = ap[1];
+		sa->code = ap[_QUAD_LOWWORD];
 		nap -= 2;
 		ap += 2;
 	}