Subject: CVE-2024-38597: eth: sungem: remove .ndo_poll_controller to avoid deadlocks

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

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

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

eth: sungem: remove .ndo_poll_controller to avoid deadlocks

Erhard reports netpoll warnings from sungem:

  netpoll_send_skb_on_dev(): eth0 enabled interrupts in poll (gem_start_xmit+0x0/0x398)
  WARNING: CPU: 1 PID: 1 at net/core/netpoll.c:370 netpoll_send_skb+0x1fc/0x20c

gem_poll_controller() disables interrupts, which may sleep.
We can't sleep in netpoll, it has interrupts disabled completely.
Strangely, gem_poll_controller() doesn't even poll the completions,
and instead acts as if an interrupt has fired so it just schedules
NAPI and exits. None of this has been necessary for years, since
netpoll invokes NAPI directly.

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

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

	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 5.10.219 with commit e22b23f5888a
	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 5.15.161 with commit fbeeb55dbb33
	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 6.1.93 with commit 476adb3bbbd7
	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 6.6.33 with commit 5de5aeb98f9a
	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 6.8.12 with commit faf94f1eb8a3
	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 6.9.3 with commit 6400d205fbbc
	Issue introduced in 3.1 with commit fe09bb619096 and fixed in 6.10 with commit ac0a230f719b

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-38597
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/ethernet/sun/sungem.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/e22b23f5888a065d084e87db1eec639c445e677f
	https://git.kernel.org/stable/c/fbeeb55dbb33d562149c57e794f06b7414e44289
	https://git.kernel.org/stable/c/476adb3bbbd7886e8251d3b9ce2d3c3e680f35d6
	https://git.kernel.org/stable/c/5de5aeb98f9a000adb0db184e32765e4815d860b
	https://git.kernel.org/stable/c/faf94f1eb8a34b2c31b2042051ef36f63420ecce
	https://git.kernel.org/stable/c/6400d205fbbcbcf9b8510157e1f379c1d7e2e937
	https://git.kernel.org/stable/c/ac0a230f719b02432d8c7eba7615ebd691da86f4