]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
net: avoid weird emergency message
authorEric Dumazet <edumazet@google.com>
Thu, 16 May 2019 15:09:57 +0000 (08:09 -0700)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 12 Aug 2019 09:30:38 +0000 (11:30 +0200)
BugLink: https://bugs.launchpad.net/bugs/1837516
[ Upstream commit d7c04b05c9ca14c55309eb139430283a45c4c25f ]

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>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
net/core/dev.c

index 7277dd393c004f3d3a8e3140bf699a6bba1024e7..c8e672ac32cb0ad8be82ed32bb64ce982ab24284 100644 (file)
@@ -8829,7 +8829,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;