Message ID | 20221117092641.3319176-1-edumazet@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fd896e38e5df2c5b68c78eee2fc425c4dcd3b4dd |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: fix napi_disable() logic error | expand |
Hello: This patch was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Thu, 17 Nov 2022 09:26:41 +0000 you wrote: > Dan reported a new warning after my recent patch: > > New smatch warnings: > net/core/dev.c:6409 napi_disable() error: uninitialized symbol 'new'. > > Indeed, we must first wait for STATE_SCHED and STATE_NPSVC to be cleared, > to make sure @new variable has been initialized properly. > > [...] Here is the summary with links: - [net-next] net: fix napi_disable() logic error https://git.kernel.org/netdev/net-next/c/fd896e38e5df You are awesome, thank you!
diff --git a/net/core/dev.c b/net/core/dev.c index d0fb4af9a12611c7f82798a700205604730e4d10..7627c475d991bfeb7138e0868d423e654d46f036 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6399,9 +6399,9 @@ void napi_disable(struct napi_struct *n) val = READ_ONCE(n->state); do { - if (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) { + while (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) { usleep_range(20, 200); - continue; + val = READ_ONCE(n->state); } new = val | NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC;
Dan reported a new warning after my recent patch: New smatch warnings: net/core/dev.c:6409 napi_disable() error: uninitialized symbol 'new'. Indeed, we must first wait for STATE_SCHED and STATE_NPSVC to be cleared, to make sure @new variable has been initialized properly. Fixes: 4ffa1d1c6842 ("net: adopt try_cmpxchg() in napi_{enable|disable}()") Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Eric Dumazet <edumazet@google.com> --- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)