From: Greg Kroah-Hartman Date: Mon, 2 Dec 2013 17:59:02 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.4.72~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d0963f9b345df326cd538c569eacdf58b0f64105;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: xen-netback-fix-refcnt-unbalance-for-3.10.patch --- diff --git a/queue-3.10/series b/queue-3.10/series index 92f8e3a5616..6ecfd59c18f 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -170,3 +170,4 @@ netfilter-nf_conntrack-use-rcu-safe-kfree-for-conntrack-extensions.patch media-cx23885-fix-tevii-s471-regression-since-introduction-of-ts2020.patch iwl3945-better-skb-management-in-rx-path.patch iwl4965-better-skb-management-in-rx-path.patch +xen-netback-fix-refcnt-unbalance-for-3.10.patch diff --git a/queue-3.10/xen-netback-fix-refcnt-unbalance-for-3.10.patch b/queue-3.10/xen-netback-fix-refcnt-unbalance-for-3.10.patch new file mode 100644 index 00000000000..c6266cbb760 --- /dev/null +++ b/queue-3.10/xen-netback-fix-refcnt-unbalance-for-3.10.patch @@ -0,0 +1,58 @@ +From wei.liu2@citrix.com Mon Dec 2 09:57:28 2013 +From: Wei Liu +Date: Mon, 2 Dec 2013 17:49:54 +0000 +Subject: xen-netback: fix refcnt unbalance for 3.10 +To: Greg KH +Cc: Wei Liu , , , , , Ian Campbell , Konrad Wilk , David Vrabel +Message-ID: <20131202174954.GD14293@zion.uk.xensource.com> +Content-Disposition: inline + +From: Wei Liu + +With the introduction of "xen-netback: Don't destroy the netdev until +the vif is shut down" (upstream commit id 279f438e36), vif disconnect +and free are separated. However in the backported version reference +counting code was not correctly modified, and the reset of vif->irq +was lost. If frontend goes through vif life cycle more than once the +reference counting is skewed. + +This patch adds back the missing vif->irq reset line. It also moves +several lines of the reference counting code to vif_free, so the moved +code corresponds to the counterpart in vif_alloc, thus the reference +counting is balanced. + +Signed-off-by: Wei Liu +Acked-by: Ian Campbell +Cc: Konrad Wilk +Cc: David Vrabel +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/xen-netback/interface.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/drivers/net/xen-netback/interface.c ++++ b/drivers/net/xen-netback/interface.c +@@ -365,17 +365,19 @@ void xenvif_disconnect(struct xenvif *vi + if (netif_carrier_ok(vif->dev)) + xenvif_carrier_off(vif); + +- atomic_dec(&vif->refcnt); +- wait_event(vif->waiting_to_free, atomic_read(&vif->refcnt) == 0); +- +- if (vif->irq) ++ if (vif->irq) { + unbind_from_irqhandler(vif->irq, vif); ++ vif->irq = 0; ++ } + + xen_netbk_unmap_frontend_rings(vif); + } + + void xenvif_free(struct xenvif *vif) + { ++ atomic_dec(&vif->refcnt); ++ wait_event(vif->waiting_to_free, atomic_read(&vif->refcnt) == 0); ++ + unregister_netdev(vif->dev); + + free_netdev(vif->dev);