| From foo@baz Wed 22 May 2019 06:53:31 PM CEST |
| From: Eric Dumazet <edumazet@google.com> |
| Date: Thu, 16 May 2019 08:09:57 -0700 |
| Subject: net: avoid weird emergency message |
| |
| From: Eric Dumazet <edumazet@google.com> |
| |
| [ 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> |
| --- |
| net/core/dev.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/core/dev.c |
| +++ b/net/core/dev.c |
| @@ -7499,7 +7499,7 @@ static void netdev_wait_allrefs(struct n |
| |
| 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; |