From: Eric Dumazet <[email protected]>

[ 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 <[email protected]>
Reported-by: syzbot <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 net/core/dev.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -7852,7 +7852,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;


Reply via email to