Thread (26 messages) 26 messages, 5 authors, 15d ago

Re: [RFC] entry: Untangle the return value of syscall_enter_from_user_mode from syscall NR

From: Thomas Gleixner <tglx@kernel.org>
Date: 2026-07-03 09:34:42
Also in: linux-doc, linux-riscv, linux-s390, lkml, loongarch

On Fri, Jul 03 2026 at 09:53, Michal Suchánek wrote:
On Thu, Jul 02, 2026 at 10:45:54PM +0200, Thomas Gleixner wrote:
quoted
quoted
When the syscall number was -1 to start with it's not possible to
determine if the syscall was fileterd from the return value. s390
returns the filtered state in a flag it sets on the regs structure,
avoiding this problem.
What needs to determine whether the syscall was filtered or not?
The code that executes syscall_enter_from_user_mode() needs to determine
that.

After syscall_enter_from_user_mode() returns the syscall needs to be
executed or skipped.

'Executing' an invalid syscall boils down to setting the return value to
-ENOSYS.

But if the syscall number returned is -1 was the syscall filtered and
the return value set by syscall_enter_from_user_mode() or should it be
set by the caller to -ENOSYS?
See the explanation I gave to Peter. It's conclusive, but admittedly not
intuitive.

The fact, that s390 decided to have the syscall number and the return
value in the same register is a different problem, but as I pointed out
to Sven it could have been solved completely without that flag.

Thanks,

        tglx
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help