]> git.ipfire.org Git - thirdparty/linux.git/commit
pcnet32: stop holding device spin lock during napi_complete_done
authorOscar Maes <oscmaes92@gmail.com>
Thu, 28 May 2026 14:03:20 +0000 (16:03 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 2 Jun 2026 18:26:30 +0000 (11:26 -0700)
commit73bf3cca7de6a73f53b6a52dc3b1c82ae5667a4d
tree0ed6bdb6d1155fa5b7f480012f07cd2d9051e54b
parent3522b21fd7e1863d0734537737bd59f1b90d0190
pcnet32: stop holding device spin lock during napi_complete_done

napi_complete_done may call gro_flush_normal (though not currently, as GRO
is unsupported at the moment), which may result in packet TX. This will
eventually result in calling pcnet32_start_xmit - resulting in a deadlock
while trying to re-acquire the already locked spin lock.

It is safe to split the spinlock block into two, because the hardware
registers are still protected from concurrent access, and the two blocks
perform unrelated operations that don't need to happen atomically.

Fixes: 5b2ec6f2be51 ("pcnet32: use napi_complete_done()")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Link: https://patch.msgid.link/20260528140320.5556-1-oscmaes92@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/amd/pcnet32.c