CVE-2026-98273

CVE-2026-98273

published October 6, 2026

CVSS
—
EPSS
0%
Percentile
6.4
In the wild
Unconfirmed
What it is

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

x86/kprobes: Fix crash when probing CS CALL instructions

When using eBPF to probe CS CALL instructions within a function,

a crash can be triggered.

The eBPF tool probes offset 257 of the __hrtimer_run_queues()

function:

<__hrtimer_run_queues+249>: nopl 0x0(%rax,%rax,1)

<__hrtimer_run_queues+254>: mov %r14,%rdi

<__hrtimer_run_queues+257>: cs call <__x86_indirect_thunk_r12>

<__hrtimer_run_queues+263>: mov %eax,%r12d

<__hrtimer_run_queues+266>: xchg %ax,%ax

<__hrtimer_run_queues+268>: mov %r13,%rdi

Which triggers this crash:

BUG: unable to handle page fault for address: 00000000000f41c9

#PF: supervisor write access in kernel mode

#PF: error_code(0x0002) - not-present page

PGD 0 P4D 0

Oops: 0002 [#1] SMP NOPTI

CPU: 1 PID: 0 Comm: swapper/1 Kdump: loaded Tainted: P

RIP: 0010:__hrtimer_run_queues+0x106/0x230

Note that __hrtimer_run_queues+0x106 is __hrtimer_run_queues+262, which is

at the 6th byte of the above CS CALL instruction. Since the CS CALL

instruction occupies 6 bytes, the exception occurred in the middle of that

call instruction.

The root cause is that when using eBPF tools to probe in the middle of a

function, a kprobe with INT3 is used as the underlying implementation.

During single-step emulation of the original CALL instruction,

int3_emulate_call() assumes that the probed CALL instruction is 5 bytes

long. However, the actual CS-prefixed CALL instruction occupies 6 bytes,

so it constructs an incorrect exception return address. When the CPU

returns from the kprobe handler, the next instruction to be executed is at

the address of the last byte of that CS CALL instruction. Coincidentally,

starting from that address, the CPU fetches and decodes a completely

different instruction, which ultimately triggers a kernel crash.

Fix the issue by using the actual instruction length obtained from

the instruction decoder when constructing the exception return

address, rather than relying on the hardcoded CALL_INSN_SIZE macro.

[ mingo: Refined the changelog ]

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00173 · 6.4th percentile
Published
2026-10-06T13:18Z
References (3)
EPSS history
Timeline
  • 07 OCT 03:43Z
    EPSS moved — → 0%
    epss
  • 06 OCT 08:45Z
    x86/kprobes: Fix crash when probing CS CALL instructions
    cvelistv5