Re: [PATCH net v2] napi: fix race inside napi_enable
From: patchwork-bot+netdevbpf@kernel.org
Date: 2021-09-20 08:50:11
Hello: This patch was applied to netdev/net.git (refs/heads/master): On Sat, 18 Sep 2021 16:52:32 +0800 you wrote:
The process will cause napi.state to contain NAPI_STATE_SCHED and
not in the poll_list, which will cause napi_disable() to get stuck.
The prefix "NAPI_STATE_" is removed in the figure below, and
NAPI_STATE_HASHED is ignored in napi.state.
CPU0 | CPU1 | napi.state
===============================================================================
napi_disable() | | SCHED | NPSVC
napi_enable() | |
{ | |
smp_mb__before_atomic(); | |
clear_bit(SCHED, &n->state); | | NPSVC
| napi_schedule_prep() | SCHED | NPSVC
| napi_poll() |
| napi_complete_done() |
| { |
| if (n->state & (NPSVC | | (1)
| _BUSY_POLL))) |
| return false; |
| ................ |
| } | SCHED | NPSVC
| |
clear_bit(NPSVC, &n->state); | | SCHED
} | |
| |
napi_schedule_prep() | | SCHED | MISSED (2)
[...]
Here is the summary with links:
- [net,v2] napi: fix race inside napi_enable
https://git.kernel.org/netdev/net/c/3765996e4f0b
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html