CVE-2026-43465 in Linux
Zusammenfassung
von VulDB • 19.05.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/mlx5e: RX, Korrektur der XDP Multi-Buf-Fragmentzählung für striding RQ
XDP-Programme mit mehreren Puffern können das Layout des XDP-Puffers ändern, wenn das Programm `bpf_xdp_pull_data()` oder `bpf_xdp_adjust_tail()` aufruft. Der im Fixes-Tag referenzierte Commit korrigierte die Annahme im mlx5-Treiber, dass sich das XDP-Puffer-Layout während der Programmausführung nicht ändert. Diese Korrektur führte jedoch zu einem weiteren Problem: Die verworfenen Fragmente müssen weiterhin auf Treiberebene gezählt werden, um Probleme bei der Referenzzählung von Seitenfragmenten zu vermeiden.
Das Problem wurde durch den Selftest `drivers/net/xdp.py` entdeckt, genauer gesagt durch den Test `test_xdp_native_tx_mb`: - Der mlx5-Treiber alloziert eine `page_pool`-Seite und initialisiert sie mit einem Fragment-Zähler von 64 (`pp_ref_count=64`) und dem internen Fragment-Zähler auf 0. - Der Test sendet ein Paket ohne Nutzdaten. - Beim RX-Vorgang (`mlx5e_skb_from_cqe_mpwrq_nonlinear()`) konfiguriert mlx5 den XDP-Puffer mit den Paketdaten, die im ersten Fragment beginnen, welches die oben genannte Seite ist. - Das XDP-Programm wird ausgeführt und ruft `bpf_xdp_pull_data()` auf, wodurch der Header in den linearen Teil des XDP-Puffers verschoben wird. Da das Paket keine weiteren Daten enthält, verwirft das Programm das Tail-Fragment, da es keine Nutzdaten mehr enthält (`pp_ref_count=63`). - Das mlx5-Gerät überspringt die Zählung dieses Fragments. Der interne Fragment-Zähler bleibt bei 0. - mlx5 gibt alle 64 Fragmente der Seite frei, aber der `pp_ref_count` der Seite beträgt 63 => Fehler bei der negativen Referenzzählung.
Resultierender Splat während des Tests:
WARNING: CPU: 0 PID: 188225 at ./include/net/page_pool/helpers.h:297 mlx5e_page_release_fragmented.isra.0+0xbd/0xe0 [mlx5_core]
Modules linked in: [...]
CPU: 0 UID: 0 PID: 188225 Comm: XdpTxMb Not tainted 6.14.0-rc3 #1 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014 RIP: 0010:mlx5e_page_release_fragmented.isra.0+0xbd/0xe0 [mlx5_core]
Code: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0
Be aware that VulDB is the high quality source for vulnerability data.