CVE-2026-23140 PUBLISHED

bpf, test_run: Subtract size of xdp_frame from allowed metadata size

Assigner: Linux
Reserved: 13.01.2026 Published: 14.02.2026 Updated: 14.02.2026

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

bpf, test_run: Subtract size of xdp_frame from allowed metadata size

The xdp_frame structure takes up part of the XDP frame headroom, limiting the size of the metadata. However, in bpf_test_run, we don't take this into account, which makes it possible for userspace to supply a metadata size that is too large (taking up the entire headroom).

If userspace supplies such a large metadata size in live packet mode, the xdp_update_frame_from_buff() call in xdp_test_run_init_page() call will fail, after which packet transmission proceeds with an uninitialised frame structure, leading to the usual Bad Stuff.

The commit in the Fixes tag fixed a related bug where the second check in xdp_update_frame_from_buff() could fail, but did not add any additional constraints on the metadata size. Complete the fix by adding an additional check on the metadata size. Reorder the checks slightly to make the logic clearer and add a comment.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from b6f1f780b3932ae497ed85e79bc8a1e513883624 to e7440935063949d6f2c10f7328d960d0ff4bce90 (excl.)
  • affected from b6f1f780b3932ae497ed85e79bc8a1e513883624 to 7c81ad5e580bd8441f8a521a8d34824ce6582ae5 (excl.)
  • affected from b6f1f780b3932ae497ed85e79bc8a1e513883624 to 6447e697cfa8a43a8e491cb81bcc390d0f28f8ba (excl.)
  • affected from b6f1f780b3932ae497ed85e79bc8a1e513883624 to 31e37f44b60679d90b9f999c91371b15291be8e0 (excl.)
  • affected from b6f1f780b3932ae497ed85e79bc8a1e513883624 to e558cca217790286e799a8baacd1610bda31b261 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 5.18 is affected
  • unaffected from 0 to 5.18 (excl.)
  • unaffected from 6.1.161 to 6.1.* (incl.)
  • unaffected from 6.6.121 to 6.6.* (incl.)
  • unaffected from 6.12.66 to 6.12.* (incl.)
  • unaffected from 6.18.6 to 6.18.* (incl.)
  • unaffected from 6.19 to * (incl.)

References