CVE-2026-93174: bpf: Copy per-CPU map value padding in copy_map_value_long()

Published Sep 17, 2026
·
Updated

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

bpf: Copy per-CPU map value padding in copymapvaluelong()

In kernel, per-CPU map elements are stored with roundup(map->valuesize, 8) bytes. On UAPI lookup paths, it copies the rounded size for each CPU into a temporary buffer.

However, copymapvaluelong() passes 'map->valuesize' to bpfobjmemcpy(). When the map has special fields, bpfobjmemcpy() copies around those fields with memcpy(), and does not copy the tail padding between 'map->valuesize' and roundup(map->valuesize, 8).

The temporary UAPI lookup buffers are allocated without GFPZERO. As a result, when the per-CPU map's value size is not equal to roundup(map->valuesize, 8), UAPI LOOKUPELEM and its variants can return stale heap contents from that padding to user space. The same issue applies to bpfiter for per-CPU maps.

Pass roundup(map->valuesize, 8) to bpfobjmemcpy() from copymapvaluelong(), so per-CPU maps both with and without special fields copy the entire per-CPU slot. Remove the now redundant roundup() from bpfobjmemcpy()'s longmemcpy path.

Affected Software

1 affected component
Linux Kernel

Event History

Sep 17, 2026
CVE Published
via MITRE·04:12 PM
Data Sourced
via MITRE·04:12 PM
Description

Frequently Asked Questions

1

When can this leak occur?

The issue affects per-CPU BPF maps whose value size is not already a multiple of 8 bytes and that contain special fields. It can occur through UAPI LOOKUP_ELEM operations and their variants, as well as through bpf_iter for per-CPU maps.

2

What information could be exposed?

Affected lookup paths can return stale kernel heap contents from the padding between the map value size and its 8-byte-rounded per-CPU storage size. The exposed bytes are the uninitialized tail padding in the temporary UAPI lookup buffer.

3

What change fixes the issue?

The fix copies round_up(map->value_size, 8) bytes for each per-CPU slot in copy_map_value_long(), including padding. This ensures the entire stored slot is copied before data is returned through the affected paths.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203