diff options
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
| -rw-r--r-- | drivers/net/xen-netback/netback.c | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index 37984e6d4e9..8c20935d72c 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -662,7 +662,7 @@ static void xen_netbk_rx_action(struct xen_netbk *netbk)  {  	struct xenvif *vif = NULL, *tmp;  	s8 status; -	u16 irq, flags; +	u16 flags;  	struct xen_netif_rx_response *resp;  	struct sk_buff_head rxq;  	struct sk_buff *skb; @@ -771,13 +771,13 @@ static void xen_netbk_rx_action(struct xen_netbk *netbk)  					 sco->meta_slots_used);  		RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&vif->rx, ret); -		irq = vif->irq; -		if (ret && list_empty(&vif->notify_list)) -			list_add_tail(&vif->notify_list, ¬ify);  		xenvif_notify_tx_completion(vif); -		xenvif_put(vif); +		if (ret && list_empty(&vif->notify_list)) +			list_add_tail(&vif->notify_list, ¬ify); +		else +			xenvif_put(vif);  		npo.meta_cons += sco->meta_slots_used;  		dev_kfree_skb(skb);  	} @@ -785,6 +785,7 @@ static void xen_netbk_rx_action(struct xen_netbk *netbk)  	list_for_each_entry_safe(vif, tmp, ¬ify, notify_list) {  		notify_remote_via_irq(vif->irq);  		list_del_init(&vif->notify_list); +		xenvif_put(vif);  	}  	/* More work to do? */ | 
