Patch "xen-netback: protect resource cleaning on XenBus disconnect" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
xen-netback: protect resource cleaning on XenBus disconnect
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
xen-netback-protect-resource-cleaning-on-xenbus-disconnect.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Jul 3 11:54:13 CEST 2017
From: Igor Druzhinin <[email protected]>
Date: Tue, 17 Jan 2017 20:49:38 +0000
Subject: xen-netback: protect resource cleaning on XenBus disconnect
From: Igor Druzhinin <[email protected]>
[ Upstream commit f16f1df65f1cf139ff9e9f84661e6573d6bb27fc ]
vif->lock is used to protect statistics gathering agents from using the queue structure during cleaning.
--- drivers/net/xen-netback/interface.c | 6 ++++-- drivers/net/xen-netback/xenbus.c | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-)
drivers/net/xen-netback/interface.c +4 -2
@@ -221,18 +221,18 @@ static struct net_device_stats *xenvif_g {struct xenvif *vif =netdev_priv (dev);struct xenvif_queue *queue =NULL ; -unsigned int num_queues = vif->num_queues;unsigned long rx_bytes =0 ;unsigned long rx_packets =0 ;unsigned long tx_bytes =0 ;unsigned long tx_packets =0 ;unsigned int index; +spin_lock (&vif->lock);if (vif->queues ==NULL ) goto out;/* Aggregate tx and rx stats from each queue */ -for (index =0 ; index < num_queues; ++index) { +for (index =0 ; index < vif->num_queues; ++index) { queue = &vif->queues[index]; rx_bytes += queue->stats.rx_bytes; rx_packets += queue->stats.rx_packets;
@@ -241,6 +241,8 @@ static struct net_device_stats *xenvif_g } out: +spin_unlock (&vif->lock); + vif->dev->stats.rx_bytes = rx_bytes; vif->dev->stats.rx_packets = rx_packets; vif->dev->stats.tx_bytes = tx_bytes;
drivers/net/xen-netback/xenbus.c +2 -0
@@ -503,9 +503,11 @@ static void backend_disconnect(struct bafor (queue_index =0 ; queue_index < be->vif->num_queues; ++queue_index)xenvif_deinit_queue (&be->vif->queues[queue_index]); +spin_lock (&be->vif->lock);vfree (be->vif->queues); be->vif->num_queues =0 ; be->vif->queues =NULL ; +spin_unlock (&be->vif->lock);xenvif_disconnect_ctrl (be->vif); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/xen-netback-protect-resource-cleaning-on-xenbus-disconnect.patch queue-4.9/xen-netback-fix-memory-leaks-on-xenbus-disconnect.patch