CVE-2026-23310

Source
https://cve.org/CVERecord?id=CVE-2026-23310
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23310.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2026-23310
Downstream
Published
2026-03-25T10:27:05.943Z
Modified
2026-04-14T03:47:30.025500Z
Summary
bpf/bonding: reject vlan+srcmac xmit_hash_policy change when XDP is loaded
Details

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

bpf/bonding: reject vlan+srcmac xmithashpolicy change when XDP is loaded

bondoptionmodeset() already rejects mode changes that would make a loaded XDP program incompatible via bondxdpcheck(). However, bondoptionxmithashpolicyset() has no such guard.

For 802.3ad and balance-xor modes, bondxdpcheck() returns false when xmithashpolicy is vlan+srcmac, because the 802.1q payload is usually absent due to hardware offload. This means a user can:

  1. Attach a native XDP program to a bond in 802.3ad/balance-xor mode with a compatible xmithashpolicy (e.g. layer2+3).
  2. Change xmithashpolicy to vlan+srcmac while XDP remains loaded.

This leaves bond->xdpprog set but bondxdpcheck() now returning false for the same device. When the bond is later destroyed, devxdpuninstall() calls bondxdpset(dev, NULL, NULL) to remove the program, which hits the bondxdp_check() guard and returns -EOPNOTSUPP, triggering:

WARNON(devxdpinstall(dev, mode, bpfop, NULL, 0, NULL))

Fix this by rejecting xmithashpolicy changes to vlan+srcmac when an XDP program is loaded on a bond in 802.3ad or balance-xor mode.

commit 39a0876d595b ("net, bonding: Disallow vlan+srcmac with XDP") introduced bondxdpcheck() which returns false for 802.3ad/balance-xor modes when xmithashpolicy is vlan+srcmac. The check was wired into bondxdpset() to reject XDP attachment with an incompatible policy, but the symmetric path -- preventing xmithashpolicy from being changed to an incompatible value after XDP is already loaded -- was left unguarded in bondoptionxmithashpolicy_set().

Note: commit 094ee6017ea0 ("bonding: check xdp prog when set bond mode") later added a similar guard to bondoptionmodeset(), but bondoptionxmithashpolicyset() remained unprotected.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23310.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
39a0876d595bd7c7512782dfcce0ee66f65bf221
Fixed
5c262bd0e39320a6d6c8277cb8349ce21c01b8c1
Fixed
d36ad7e126c6a0c5f699583309ccc37e3a3263ea
Fixed
0ace8027e41f6f094ef6c1aca42d2ed6cd7af54e
Fixed
e85fa809e507b9d8eff4840888b8c727e4e8448c
Fixed
479d589b40b836442bbdadc3fdb37f001bb67f26

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23310.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.15.0
Fixed
6.6.130
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.77
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.17
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
6.19.7

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23310.json"