All of lore.kernel.org
 help / color / mirror / Atom feed
* CVE-2026-90339: powerpc/syscall: Fix syscall skip handling for seccomp and ptrace
@ 2026-09-17 16:12 Greg Kroah-Hartman
  0 siblings, 0 replies; only message in thread
From: Greg Kroah-Hartman @ 2026-09-17 16:12 UTC (permalink / raw)
  To: linux-cve-announce; +Cc: Greg Kroah-Hartman

From: Greg Kroah-Hartman <gregkh@kernel.org>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

powerpc/syscall: Fix syscall skip handling for seccomp and ptrace

After enabling GENERIC_ENTRY on PowerPC, syscall_enter_from_user_mode()
returns -1 as a sentinel to signal that seccomp or ptrace has intercepted
the syscall and already set a return value via syscall_set_return_value().
system_call_exception() was not handling this sentinel, and since -1UL
is >= NR_syscalls, the code fell into the out-of-range path and returned
-ENOSYS, overwriting the errno already placed in regs->gpr[3].

The naive fix of checking r0 == -1L before the NR_syscalls bounds check
is ambiguous: a user legitimately calling syscall(-1) also produces r0 ==
-1L, and a tracer intercepting such a call would have its injected return
value silently discarded.

Fix this by introducing a thread flag that is set whenever
syscall_set_return_value() explicitly updates the return value. In
system_call_exception(), check and clear this flag before dispatching
the syscall, and return the preset value directly when it is present.
This ensures that an explicitly supplied return value always suppresses
syscall execution, regardless of the syscall number.

This handles all seccomp actions correctly:

  - SECCOMP_RET_ERRNO, SECCOMP_RET_TRACE (no tracer), SECCOMP_RET_USER_NOTIF:
    all call syscall_set_return_value(), flag is set, injected value returned.
  - SECCOMP_RET_TRAP, SECCOMP_RET_KILL: call syscall_rollback() and deliver
    a signal; flag is not set, but the process is dying so the return value
    is irrelevant.

The fix covers both ppc32 and ppc64 with no #ifdefs.

The Linux kernel CVE team has assigned CVE-2026-90339 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 7.2 with commit bee25f97ad24641df55cb3887eb5bfcb2b9d8fbc and fixed in 7.2.6 with commit 19b54740e2e1102c7d48553d9e0347c1f6af22b0
	Issue introduced in 7.2 with commit bee25f97ad24641df55cb3887eb5bfcb2b9d8fbc and fixed in 7.3-rc1 with commit 69cb2be898be6d5826cacd1a628f6945a24480b6

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-90339
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	arch/powerpc/include/asm/syscall.h
	arch/powerpc/include/asm/thread_info.h
	arch/powerpc/kernel/syscall.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/19b54740e2e1102c7d48553d9e0347c1f6af22b0
	https://git.kernel.org/stable/c/69cb2be898be6d5826cacd1a628f6945a24480b6

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-17 16:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-17 16:12 CVE-2026-90339: powerpc/syscall: Fix syscall skip handling for seccomp and ptrace Greg Kroah-Hartman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.