All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.