Subject: CVE-2024-47734: bonding: Fix unnecessary warnings and logs from bond_xdp_get_xmit_slave()

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

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

bonding: Fix unnecessary warnings and logs from bond_xdp_get_xmit_slave()

syzbot reported a WARNING in bond_xdp_get_xmit_slave. To reproduce
this[1], one bond device (bond1) has xdpdrv, which increases
bpf_master_redirect_enabled_key. Another bond device (bond0) which is
unsupported by XDP but its slave (veth3) has xdpgeneric that returns
XDP_TX. This triggers WARN_ON_ONCE() from the xdp_master_redirect().
To reduce unnecessary warnings and improve log management, we need to
delete the WARN_ON_ONCE() and add ratelimit to the netdev_err().

[1] Steps to reproduce:
    # Needs tx_xdp with return XDP_TX;
    ip l add veth0 type veth peer veth1
    ip l add veth3 type veth peer veth4
    ip l add bond0 type bond mode 6 # BOND_MODE_ALB, unsupported by XDP
    ip l add bond1 type bond # BOND_MODE_ROUNDROBIN by default
    ip l set veth0 master bond1
    ip l set bond1 up
    # Increases bpf_master_redirect_enabled_key
    ip l set dev bond1 xdpdrv object tx_xdp.o section xdp_tx
    ip l set veth3 master bond0
    ip l set bond0 up
    ip l set veth4 up
    # Triggers WARN_ON_ONCE() from the xdp_master_redirect()
    ip l set veth3 xdpgeneric object tx_xdp.o section xdp_tx

The Linux kernel CVE team has assigned CVE-2024-47734 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 5.15 with commit 9e2ee5c7e7c3 and fixed in 5.15.168 with commit c1be35e774f8
	Issue introduced in 5.15 with commit 9e2ee5c7e7c3 and fixed in 6.1.113 with commit 6b64197b4bf1
	Issue introduced in 5.15 with commit 9e2ee5c7e7c3 and fixed in 6.6.54 with commit ccd3e6ff05e5
	Issue introduced in 5.15 with commit 9e2ee5c7e7c3 and fixed in 6.10.13 with commit 72e2c0825a48
	Issue introduced in 5.15 with commit 9e2ee5c7e7c3 and fixed in 6.11.2 with commit 57b5fba55c6f
	Issue introduced in 5.15 with commit 9e2ee5c7e7c3 and fixed in 6.12-rc1 with commit 0cbfd45fbcf0

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-47734
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/net/bonding/bond_main.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/c1be35e774f8ed415e01209fddd963c5a74e8e9f
	https://git.kernel.org/stable/c/6b64197b4bf1a5703a8b105367baf20f1e627a75
	https://git.kernel.org/stable/c/ccd3e6ff05e5236d1b9535f23f3e6622e0bb32b8
	https://git.kernel.org/stable/c/72e2c0825a480e19ee999cee9d018850d38c82b9
	https://git.kernel.org/stable/c/57b5fba55c6f8b1d83312a34bd656166fcd95658
	https://git.kernel.org/stable/c/0cbfd45fbcf0cb26d85c981b91c62fe73cdee01c