CVE-2026-53069

net, bpf: fix null-ptr-deref in xdp_master_redirect() for down master

State
Published
Severity
7.5 High
Published
Jun 24, 2026
Updated
Oct 19, 2026
Reserved
Jun 9, 2026

Read the record on cve.org

Description

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

net, bpf: fix null-ptr-deref in xdp_master_redirect() for down master

syzkaller reported a kernel panic in bond_rr_gen_slave_id() reached via xdp_master_redirect(). Full decoded trace:

https://syzkaller.appspot.com/bug?extid=80e046b8da2820b6ba73

bond_rr_gen_slave_id() dereferences bond->rr_tx_counter, a per-CPU counter that bonding only allocates in bond_open() when the mode is round-robin. If the bond device was never brought up, rr_tx_counter stays NULL.

The XDP redirect path can still reach that code on a bond that was never opened: bpf_master_redirect_enabled_key is a global static key, so as soon as any bond device has native XDP attached, the XDP_TX -> xdp_master_redirect() interception is enabled for every slave system-wide. The path xdp_master_redirect() -> bond_xdp_get_xmit_slave() -> bond_xdp_xmit_roundrobin_slave_get() -> bond_rr_gen_slave_id() then runs against a bond that has no rr_tx_counter and crashes.

Fix this in the generic xdp_master_redirect() by refusing to call into the master's ->ndo_xdp_get_xmit_slave() when the master device is not up. IFF_UP is only set after ->ndo_open() has successfully returned, so this reliably excludes masters whose XDP state has not been fully initialized. Drop the frame with XDP_ABORTED so the exception is visible via trace_xdp_exception() rather than silently falling through. This is not specific to bonding: any current or future master that defers XDP state allocation to ->ndo_open() is protected.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before 3128b294b426533c8d9162187446d93a8a160359Affected
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before acbf45bd584d924b320bee2a7fe2a26f64904d95Affected
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before 866d3d9b87751b1944168fd82615505e0c0fd6cfAffected
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before 183128da0406b1c10e6f60b7b9fe70788b9c8c1dAffected
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before 7bad93e99737e4a5c0c14ac50c05152cf4e28022Affected
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before ea690b3b6e58ae00979af8195b4cc24df466b65eAffected
  • 879af96ffd72706c6e3278ea6b45b0b0e37ec5d7 to before 1921f91298d1388a0bb9db8f83800c998b649cb3Affected
LinuxLinux
  • 5.15Affected
  • before 5.15Not affected
  • 5.15.209 through 5.15.*Not affected
  • 6.1.175 through 6.1.*Not affected
  • 6.6.141 through 6.6.*Not affected
  • 6.12.91 through 6.12.*Not affected
  • 6.18.33 through 6.18.*Not affected
  • 7.0.10 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.