CVE-2026-90339: powerpc/syscall: Fix syscall skip handling for seccomp and ptrace

Published Sep 17, 2026
·
Updated

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

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

After enabling GENERICENTRY on PowerPC, syscallenterfromusermode() returns -1 as a sentinel to signal that seccomp or ptrace has intercepted the syscall and already set a return value via syscallsetreturnvalue(). systemcallexception() was not handling this sentinel, and since -1UL is >= NRsyscalls, 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 NRsyscalls 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 syscallsetreturnvalue() explicitly updates the return value. In systemcallexception(), 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:

- SECCOMPRETERRNO, SECCOMPRETTRACE (no tracer), SECCOMPRETUSERNOTIF: all call syscallsetreturnvalue(), flag is set, injected value returned. - SECCOMPRETTRAP, SECCOMPRETKILL: call syscallrollback() 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.

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Apply the kernel code fix for 'powerpc/syscall: Fix syscall skip handling for seccomp and ptrace' so that system_call_exception() checks and clears the thread flag before dispatching the syscall, and returns the preset value directly when present. This prevents discarding an explicitly supplied return value and handles all seccomp actions correctly (signal vs. syscall_set_return_value(), etc.).

    Linux kernel (powerpc/syscall) seccomp/ptrace syscall skip handling = Introduce a thread flag that is set when an intercepted return sentinel is returned (e.g., -1UL/-1L) and cleared in system_call_exception() before dispatch

Event History

Sep 17, 2026
CVE Published
via MITRE·04:08 PM
Data Sourced
via MITRE·04:08 PM
Description

Frequently Asked Questions

1

Which systems and workloads are exposed to this issue?

The issue affects PowerPC Linux kernel syscall handling after GENERIC_ENTRY is enabled. It is triggered when seccomp or ptrace intercepts a syscall and explicitly supplies a return value.

2

What symptom would indicate that the issue is occurring?

A return value placed by seccomp or ptrace can be overwritten with -ENOSYS. This can occur because the syscall-entry path treats the -1 sentinel as an out-of-range syscall number.

3

Does the issue also affect traced attempts to invoke syscall number -1?

Yes. A traced syscall(-1) is specifically ambiguous under the naive sentinel check, and a tracer-injected return value could be silently discarded.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203