All vulnerabilities
CVE-2026-98075

Linux: bpf: reject BPF_PSEUDO_FUNC reference to the main program

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.17%Chance of exploitation activity in the next 30 days, higher than 6% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in314c8caa9cb64ad60c5b969fe9a3e2dcdccf156fAlso 8cb75f7ada25b1cf25f2f74dec3ba649b9064a09, 118212417ba0120d99f84154799f8880f07411f4 and 2 moreCVE List
Published25 Sep 2026Updated 19 Oct 2026CVE List

What fixes it

  • 314c8caa9cb64ad60c5b969fe9a3e2dcdccf156fLinuxCVE List
  • 8cb75f7ada25b1cf25f2f74dec3ba649b9064a09LinuxCVE List
  • 118212417ba0120d99f84154799f8880f07411f4LinuxCVE List
  • 92f0bd0e2b632c6565ac2214a4d7d2ed37e5b9f6LinuxCVE List
  • 374b2c5561db80fcdd7cdce44af37a49416f61c7LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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

bpf: reject BPF_PSEUDO_FUNC reference to the main program

fixups.c:jit_subprogs() rewrites BPF_PSEUDO_FUNC loads to contain real function addresses. This function is invoked from bpf_jit_subprogs() only when env->subprog_cnt > 1. Meaning that for any program like below:

int main(void *ctx) { void *ptr = main; ... bpf_timer_set_callback(..., ptr); ... }

The 'ptr' won't be ever converted to contain an address. In combination with e.g. bpf_timer_set_callback() this would lead to a function call at a bogus address.

Instead of complicating the implementation, just assume that no useful program needs main to be a sync or async callback and reject BPF_PSEUDO_FUNC loads for the main subprogram.

Text from CVE List

Affected versions 16

  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before c74750dca96f40a1adb9d334f5a3152f44b270c3CVE List
  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before 314c8caa9cb64ad60c5b969fe9a3e2dcdccf156fCVE List
  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before 8cb75f7ada25b1cf25f2f74dec3ba649b9064a09CVE List
  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before 118212417ba0120d99f84154799f8880f07411f4CVE List
  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before d6c39774ae093c9f7009cc4ae918f18fc1af7ae7CVE List
  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before 92f0bd0e2b632c6565ac2214a4d7d2ed37e5b9f6CVE List
  • Linuxaffected: 69c087ba6225b574afb6e505b72cb75242a3d844 before 374b2c5561db80fcdd7cdce44af37a49416f61c7CVE List
  • Linuxaffected: 5.13CVE List
  • Linuxunaffected: all versions before 5.13CVE List
  • Linuxunaffected: 5.15.222 through 5.15.*CVE List
  • Linuxunaffected: 6.1.189 through 6.1.*CVE List
  • Linuxunaffected: 6.6.158 through 6.6.*CVE List
  • Linuxunaffected: 6.12.111 through 6.12.*CVE List
  • Linuxunaffected: 6.18.53 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 7