diff mbox series

[net] net: avoid weird emergency message

Message ID 20190516150957.217157-1-edumazet@google.com
State Accepted
Delegated to: David Miller
Headers show
Series [net] net: avoid weird emergency message | expand

Commit Message

Eric Dumazet May 16, 2019, 3:09 p.m. UTC
When host is under high stress, it is very possible thread
running netdev_wait_allrefs() returns from msleep(250)
10 seconds late.

This leads to these messages in the syslog :

[...] unregister_netdevice: waiting for syz_tun to become free. Usage count = 0

If the device refcount is zero, the wait is over.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
---
 net/core/dev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller May 16, 2019, 9:27 p.m. UTC | #1
From: Eric Dumazet <edumazet@google.com>
Date: Thu, 16 May 2019 08:09:57 -0700

> When host is under high stress, it is very possible thread
> running netdev_wait_allrefs() returns from msleep(250)
> 10 seconds late.
> 
> This leads to these messages in the syslog :
> 
> [...] unregister_netdevice: waiting for syz_tun to become free. Usage count = 0
> 
> If the device refcount is zero, the wait is over.
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Reported-by: syzbot <syzkaller@googlegroups.com>

Applied, thanks.
diff mbox series

Patch

diff --git a/net/core/dev.c b/net/core/dev.c
index 108ac8137b9be8bc7041b3e49e09c25eeb891d8f..b6b8505cfb3e2394f74b41b8e01055c697ad384b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -8927,7 +8927,7 @@  static void netdev_wait_allrefs(struct net_device *dev)
 
 		refcnt = netdev_refcnt_read(dev);
 
-		if (time_after(jiffies, warning_time + 10 * HZ)) {
+		if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) {
 			pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n",
 				 dev->name, refcnt);
 			warning_time = jiffies;