KernelScan.io

HIGH Introduced in 7.0

dst_metadata TunInfo Warning

CVE-2026-80615

CVSS 8.2 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H

KernelScan AI2.3LOW

01

In the Linux kernel, the following vulnerability has been resolved: net: dst_metadata: fix false-positive memcpy overflow in tun_dst_unclone kmalloc_flex() in metadata_dst_alloc() sets __counted_by for the structure to the options_len, which is then initialized to zero. Later, we're initializing the structure by copying the tunnel info together with the options, and this triggers a warning for a potential memcpy overflow, since the compiler estimates that the options can't fit into the structure, even though the memory for them is actually allocated. memcpy: detected buffer overflow: 104 byte write of buffer size 96 WARNING: CPU: X PID: Y at lib/string_helpers.c:1036 __fortify_report skb_tunnel_info_unclone+0x179/0x190 geneve_xmit+0x7fe/0xe00 The issue is triggered when built with clang and source fortification. Fix that by doing the copy in two stages: first - the main data with the options_len, then the options. This way the correct length should be known at the time of the copy. It would be better if the options_len never changed after allocation, but the allocation code is a little separate from the initialization and it would be awkward and potentially dangerous to return a struct with options_len set to a non-zero value from the metadata_dst_alloc(). Another option would be to use ip_tunnel_info_opts_set(), but it is doing too many unnecessary operations for the use case here.

02

Engine v0.6.0

Risk summary

A false-positive fortify warning in tunnel metadata uncloning can trigger a kernel warning when processing tunnel packets with options. This is a build-time/runtime fortification false positive, not an actual memory corruption, but can cause availability impact through kernel warnings.

Affectedinclude/net/dst_metadata.h (net: dst_metadata)

Vulnerability analysis

When a tunnel packet with options is processed, the code that clones tunnel metadata copies the tunnel info and its options in a single memcpy. Because the flexible-array count field is initialized to zero at allocation time, the compiler's fortification logic incorrectly concludes the destination buffer is too small, triggering a kernel warning even though the memory was correctly allocated. The fix splits the copy into two stages: first copying the main tunnel info structure (which sets the options length field), then copying the options separately, so the compiler can see the correct buffer size at copy time. This is reachable from network tunnel processing paths (e.g., geneve xmit) and requires no special privileges beyond the ability to send or receive tunneled packets.

03

BranchIntroducedFixed inPatch commit
mainline7.07.24c6d43db2a4d
7.17.07.1.57ce31739fe88