CVE-2026-98888

Source
https://cve.org/CVERecord?id=CVE-2026-98888
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98888.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-98888
Downstream
AZL (1)
BELL (1)
DEBIAN (1)
SUSE (4)
UBUNTU (1)
Related
Published
2026-10-23T11:37:46Z
Modified
2026-11-12T17:28:18Z
Summary
arm64: kprobes: Allow reentering kprobes while single-stepping
Details

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

arm64: kprobes: Allow reentering kprobes while single-stepping

A kprobe can be hit while another kprobe is in KPROBE_HIT_SS state. This can happen when tracing or perf code runs from the debug exception path while the first kprobe is preparing or executing its out-of-line single-step instruction.

Currently arm64 treats a kprobe hit in KPROBE_HIT_SS as unrecoverable, the same as a hit in KPROBE_REENTER. This is too strict. A hit in KPROBE_HIT_SS is still a one-level reentry and can be handled by saving the current kprobe state and setting up single-step for the new probe, just like reentry from KPROBE_HIT_ACTIVE or KPROBE_HIT_SSDONE.

The truly unrecoverable case is hitting another kprobe while already in KPROBE_REENTER, because the reentry save area has already been consumed.

Move KPROBE_HIT_SS to the recoverable reentry cases and leave KPROBE_REENTER as the unrecoverable nested reentry case.

This change also requires saving saved_irqflag in struct prev_kprobe. When a nested kprobe calls kprobes_save_local_irqflag(), it overwrites kcb->saved_irqflag with the currently masked DAIF value, losing the outer kprobe's original DAIF state. Without this fix, when the outer kprobe's single-step finishes, kprobes_restore_local_irqflag() applies the wrong DAIF mask and leaves interrupts permanently disabled.

Extend struct prev_kprobe with a saved_irqflag field and save/restore it alongside kp and status. This ensures the outer kprobe's original interrupt state is preserved across reentry.

This mirrors the x86 fix in commit 6a5022a56ac3 ("kprobes/x86: Allow to handle reentered kprobe on single-stepping").

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98888.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
2dd0e8d2d2a157dbc83295a78336c2217110f2f8
Fixed
bb0fe9121aa0824211aafa33c7d0151fd25ddb75
Fixed
f96a0606de6bcc8d937b80e6470fd7a174c17e26
Fixed
1f342b3e44c3035a837b53b217d816f7511c0d0a
Fixed
c8e84e292ed4cfc199824146da71bb4397b02a1f
Fixed
68774caca799e9695db56d426c69acebd041c2ed
Fixed
a21bf9cb893126e8d9730995708d0be5eb167652
Fixed
23f851ac0078a908bf3422d6467ebc1db5828c46

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98888.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.8.0
Fixed
5.10.271
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.222
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.189
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.158
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.111
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.53

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98888.json"