From: Wei Liu <wei.liu2@citrix.com>
To: netdev@vger.kernel.org, xen-devel@lists.xensource.com
Cc: Wei Liu <wei.liu2@citrix.com>,
ian.campbell@citrix.com, konrad.wilk@oracle.com
Subject: [RFC PATCH V4 03/13] netback: add module get/put operations along with vif connect/disconnect.
Date: Thu, 2 Feb 2012 16:49:13 +0000 [thread overview]
Message-ID: <1328201363-13915-4-git-send-email-wei.liu2@citrix.com> (raw)
In-Reply-To: <1328201363-13915-1-git-send-email-wei.liu2@citrix.com>
If there is vif running and user unloads netback, it will certainly
cause problems -- guest's network interface just mysteriously stops
working.
disconnect function may get called by the generic framework even
before vif connects.
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
drivers/net/xen-netback/interface.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index 1825629..4795c0f 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -312,6 +312,8 @@ int xenvif_connect(struct xenvif *vif, unsigned long tx_ring_ref,
if (vif->irq)
return 0;
+ __module_get(THIS_MODULE);
+
err = xen_netbk_map_frontend_rings(vif, tx_ring_ref, rx_ring_ref);
if (err < 0)
goto err;
@@ -339,12 +341,15 @@ int xenvif_connect(struct xenvif *vif, unsigned long tx_ring_ref,
err_unmap:
xen_netbk_unmap_frontend_rings(vif);
err:
+ module_put(THIS_MODULE);
return err;
}
void xenvif_disconnect(struct xenvif *vif)
{
struct net_device *dev = vif->dev;
+ int need_module_put = 0;
+
if (netif_carrier_ok(dev)) {
rtnl_lock();
netif_carrier_off(dev); /* discard queued packets */
@@ -359,12 +364,17 @@ void xenvif_disconnect(struct xenvif *vif)
del_timer_sync(&vif->credit_timeout);
- if (vif->irq)
+ if (vif->irq) {
unbind_from_irqhandler(vif->irq, vif);
+ need_module_put = 1;
+ }
unregister_netdev(vif->dev);
xen_netbk_unmap_frontend_rings(vif);
free_netdev(vif->dev);
+
+ if (need_module_put)
+ module_put(THIS_MODULE);
}
--
1.7.2.5
next prev parent reply other threads:[~2012-02-02 16:49 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-02 16:49 [RFC PATCH V4] Xen netback / netfront improvement Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 01/13] netback: page pool version 1 Wei Liu
2012-02-02 17:26 ` Eric Dumazet
2012-02-17 19:19 ` Konrad Rzeszutek Wilk
2012-02-20 16:26 ` Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 02/13] netback: add module unload function Wei Liu
2012-02-02 17:08 ` Eric Dumazet
2012-02-02 17:28 ` Wei Liu
2012-02-02 17:48 ` Eric Dumazet
2012-02-02 19:59 ` Ian Campbell
2012-02-02 20:34 ` Eric Dumazet
2012-02-02 20:37 ` Eric Dumazet
2012-02-02 20:50 ` Ian Campbell
2012-02-02 22:52 ` Paul Gortmaker
2012-02-03 6:38 ` Ian Campbell
2012-02-03 7:25 ` Eric Dumazet
2012-02-03 8:02 ` Ian Campbell
2012-02-03 11:27 ` Wei Liu
2012-02-02 16:49 ` Wei Liu [this message]
2012-02-02 16:49 ` [RFC PATCH V4 04/13] netback: switch to NAPI + kthread model Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 05/13] netback: switch to per-cpu scratch space Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 06/13] netback: melt xen_netbk into xenvif Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 07/13] netback: alter internal function/structure names Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 08/13] xenbus_client: extend interface to support mapping / unmapping of multi page ring Wei Liu
2012-02-03 16:55 ` Konrad Rzeszutek Wilk
2012-02-03 17:20 ` Wei Liu
2012-02-03 17:35 ` Konrad Rzeszutek Wilk
2012-02-06 17:21 ` Konrad Rzeszutek Wilk
2012-02-06 17:30 ` Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 09/13] Bundle fix for xen backends and frontends Wei Liu
2012-02-03 2:34 ` Konrad Rzeszutek Wilk
2012-02-02 16:49 ` [RFC PATCH V4 10/13] netback: multi page ring support Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 11/13] netback: split event channels support Wei Liu
2012-02-02 16:49 ` [RFC PATCH V4 12/13] netfront: multi page ring support Wei Liu
2012-02-15 22:42 ` Konrad Rzeszutek Wilk
2012-02-15 22:52 ` David Miller
2012-02-15 23:53 ` Konrad Rzeszutek Wilk
2012-02-16 10:02 ` Wei Liu
2012-02-16 10:16 ` Wei Liu
2012-02-17 15:10 ` Konrad Rzeszutek Wilk
2012-02-16 22:57 ` Konrad Rzeszutek Wilk
2012-02-02 16:49 ` [RFC PATCH V4 13/13] netfront: split event channels support Wei Liu
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=1328201363-13915-4-git-send-email-wei.liu2@citrix.com \
--to=wei.liu2@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=konrad.wilk@oracle.com \
--cc=netdev@vger.kernel.org \
--cc=xen-devel@lists.xensource.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).