CVE Catalog

CVE-2025-37893

HighCVSS 7.8
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.26%

18th percentile - higher than 18% of all known CVEs

Summary

In the Linux kernel for the LoongArch architecture, an off-by-one vulnerability was found in the BPF JIT's build_prologue() function. When BPF programs mix bpf2bpf and tailcalls, the first pass generates N instructions and the second generates N+1, causing epilogue_offset to be off and jumping to an unexpected instruction, leading to a kernel hard lockup.

Risk Assessment

The organization is at risk of a complete system hard lockup when running BPF programs with tailcalls on LoongArch, potentially disrupting critical services.

Recommendation

Update the Linux kernel to a version containing the fix that adds a nop instruction to align the instruction count between passes.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: LoongArch: BPF: Fix off-by-one error in build_prologue() Vincent reported that running BPF progs with tailcalls on LoongArch causes kernel hard lockup. Debugging the issues shows that the JITed image missing a jirl instruction at the end of the epilogue. There are two passes in JIT compiling, the first pass set the flags and the second pass generates JIT code based on those flags. With BPF progs mixing bpf2bpf and tailcalls, build_prologue() generates N insns in the first pass and then generates N+1 insns in the second pass. This makes epilogue_offset off by one and we will jump to some unexpected insn and cause lockup. Fix this by inserting a nop insn.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS