Thread (10 messages) 10 messages, 4 authors, 2022-09-04

Re: [PATCH] net: rose: fix unregistered netdevice: waiting for rose0 to become free

From: Eric Dumazet <edumazet@google.com>
Date: 2022-07-22 17:05:59
Also in: linux-hams, lkml

On Fri, Jul 22, 2022 at 6:41 PM Bernard f6bvp [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Here is the context.

This patch adds dev_put(dev) in order to allow removal of rose module
after use of AX25 and ROSE via rose0 device.

Otherwise when trying to remove rose module via rmmod rose an infinite
loop message was displayed on all consoles with xx being a random number.

unregistered_netdevice: waiting for rose0 to become free. Usage count = xx

unregistered_netdevice: waiting for rose0 to become free. Usage count = xx

...

With the patch it is ok to rmmod rose.

This bug appeared with kernel 4.10 and has been only partially repaired
by adding two dev_put(dev).

Signed-off-by: Bernard Pidoux <redacted>

---
  net/rose/af_rose.c | 2 ++
  1 file changed, 2 insertions(+)
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
index bf2d986a6bc3..4163171ce3a6 100644
--- a/net/rose/af_rose.c
+++ b/net/rose/af_rose.c
@@ -711,6 +711,8 @@ static int rose_bind(struct socket *sock, struct
sockaddr *uaddr, int addr_len)
      rose_insert_socket(sk);

      sock_reset_flag(sk, SOCK_ZAPPED);
+
+    dev_put(dev);
But, we have at line 698 :

rose->device        = dev;

So we can not keep a pointer to a device without holding a reference on it.

As a bonus we could convert these dev_put() to new infra added with
CONFIG_NET_DEV_REFCNT_TRACKER=y


      return 0;
  }
--
2.34.1

[master da21d19e920d] [PATCH] net: rose: fix unregistered netdevice:
waiting for rose0 to become free
  Date: Mon Jul 18 16:23:54 2022 +0200
  1 file changed, 2 insertions(+)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help