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, structsockaddr *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(+)