Re: [patch 16/18] x86/entry: Get rid of the sys_ni_syscall() indirection

From
Thomas Gleixner <tglx@kernel.org>
Date
2026-10-22 19:16:03
Also in
linux-alpha, linux-arch, linux-doc, linux-m68k, linux-mips, linux-riscv, linux-s390, linux-sh, linux-um, lkml, loongarch, sparclinux
Reply to
Sebastian Andrzej Siewior, 2026-10-22
On Thu, Oct 22 2026 at 16:24, Sebastian Andrzej Siewior wrote:
On 2026-07-07 21:07:01 [+0200], Thomas Gleixner wrote:
quoted
Invoking sys_ni_syscall() from a code path, which already knows that the
syscall number is invalid just to assign -ENOSYS to regs->ax is a pointless
exercise. It's even redundant as the low level entry code already has set
regs->ax to -ENOSYS on entry.

Remove the extra conditionals and the function calls.
Since this patch, tools/testing/selftests/x86/syscall_numbering_64
throws in this:
|[RUN]   Running tests under ptrace: modifying the default return
|[RUN]       Checking system calls with msb = 0 (0x0)
|[RUN]           Checking some common syscalls as 64 bit
|[OK]                x64 syscall 0:0 returned 0 as expected
|[OK]                x64 syscall 0:1 returned 0 as expected
|[RUN]           Checking some 64-bit only syscalls as 64 bit
|[OK]                x64 syscall 0:19 returned 0 as expected
|[OK]                x64 syscall 0:20 returned 0 as expected
|[RUN]           Checking out of range system calls
|[FAIL]                  x32 syscall 0:-64 returned -9999, but it should have returned -ENOSYS
…
|[FAIL]                  x32 syscall 0:-2 returned -9999, but it should have returned -ENOSYS
|[FAIL]              x32 syscalls 0:-64..-2 had 63 failure
|[OK]                x32 syscall 0:-1 returned MODIFIED_BY_PTRACE as expected
|[FAIL]                  x64 syscall 0:1073741760 returned -9999, but it should have returned -ENOSYS
…
|[FAIL]                  x64 syscall 0:1073741823 returned -9999, but it should have returned -ENOSYS
|[FAIL]              x64 syscalls 0:1073741760..1073741823 had 64 failure
|[FAIL]                  x64 syscall 0:-64 returned -9999, but it should have returned -ENOSYS
…
|[FAIL]                  x64 syscall 0:547 returned -9999, but it should have returned -ENOSYS
|[FAIL]              x64 syscalls 0:512..547 had 36 failure
|[RUN]           Checking some common syscalls as x32
|[OK]                x32 syscall 0:0 returned 0 as expected
…
|[RUN]           Checking out of range system calls
|[FAIL]                  x32 syscall 1:-64 returned -9999, but it should have returned -ENOSYS
|[FAIL]              x32 syscalls 1:-64..-2 had 63 failure
|[OK]                x32 syscall 1:-1 returned MODIFIED_BY_PTRACE as expected
|[FAIL]                  x64 syscall 1:1073741760 returned -9999, but it should have returned -ENOSYS
…

and so on… The test has

| #define MODIFIED_BY_PTRACE      -9999

and the ptracer modifies the return code. However not always. Not sure
if this was indeed a pointless exercise or not.
Hrmm. That's weird. Let me have a look.
Thread (125 messages) 125 messages, 17 authors, last reply 6d ago
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help