From: Apollon Oikonomopoulos <apollon@noc.grnet.gr>
To: netdev@vger.kernel.org
Subject: [PATCH] X.25: decrement netdev reference counts on unload
Date: Tue, 7 Dec 2010 21:43:30 +0200 [thread overview]
Message-ID: <20101207194330.GA22608@noc.grnet.gr> (raw)
Hello,
We came across this bug when we accidentally loaded and unloaded the x25
kernel module on a host with KVM virtual machines. All subsequent
attempts to stop a KVM instance resulted in the KVM process entering D
state. Reproducing this behaviour can be done in the following way:
1. modprobe x25
2. tunctl && ifconfig tap0 up
3. rmmod x25
4. tunctl -d tap0 (hangs)
A patch follows - we don't use X.25 ourselves so I'm not sure it won't
panic someone's system.
Regards,
Apollon
PS: I am not subscribed to the list, so please copy any replies to my
address. Thanks!
----
x25 does not decrement the network device reference counts on module unload.
Thus unregistering any pre-existing interface after unloading the x25 module
hangs and results in
unregister_netdevice: waiting for tap0 to become free. Usage count = 1
This patch decrements the reference counts of all interfaces in x25_link_free,
the way it is already done in x25_link_device_down for NETDEV_DOWN events.
Signed-off-by: Apollon Oikonomopoulos <apollon@noc.grnet.gr>
---
net/x25/x25_link.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/net/x25/x25_link.c b/net/x25/x25_link.c
index 73e7b95..b25c646 100644
--- a/net/x25/x25_link.c
+++ b/net/x25/x25_link.c
@@ -394,6 +394,7 @@ void __exit x25_link_free(void)
list_for_each_safe(entry, tmp, &x25_neigh_list) {
nb = list_entry(entry, struct x25_neigh, node);
__x25_remove_neigh(nb);
+ dev_put(nb->dev);
}
write_unlock_bh(&x25_neigh_list_lock);
}
--
1.7.1
next reply other threads:[~2010-12-07 19:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-07 19:43 Apollon Oikonomopoulos [this message]
2010-12-07 22:48 ` [PATCH] X.25: decrement netdev reference counts on unload Andrew Hendry
2010-12-08 18:55 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101207194330.GA22608@noc.grnet.gr \
--to=apollon@noc.grnet.gr \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.