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