xen/netfront: don't cache skb_shinfo()

skb_shinfo() can change when calling __pskb_pull_tail(): Don't cache
its return value.

Cc: stable@vger.kernel.org
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Juergen Gross and committed by David S. Miller d472b3a6 556fdd85

Changed files
+4 -4
drivers
+4 -4
drivers/net/xen-netfront.c
··· 894 894 struct sk_buff *skb, 895 895 struct sk_buff_head *list) 896 896 { 897 - struct skb_shared_info *shinfo = skb_shinfo(skb); 898 897 RING_IDX cons = queue->rx.rsp_cons; 899 898 struct sk_buff *nskb; 900 899 ··· 902 903 RING_GET_RESPONSE(&queue->rx, ++cons); 903 904 skb_frag_t *nfrag = &skb_shinfo(nskb)->frags[0]; 904 905 905 - if (shinfo->nr_frags == MAX_SKB_FRAGS) { 906 + if (skb_shinfo(skb)->nr_frags == MAX_SKB_FRAGS) { 906 907 unsigned int pull_to = NETFRONT_SKB_CB(skb)->pull_to; 907 908 908 909 BUG_ON(pull_to <= skb_headlen(skb)); 909 910 __pskb_pull_tail(skb, pull_to - skb_headlen(skb)); 910 911 } 911 - BUG_ON(shinfo->nr_frags >= MAX_SKB_FRAGS); 912 + BUG_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS); 912 913 913 - skb_add_rx_frag(skb, shinfo->nr_frags, skb_frag_page(nfrag), 914 + skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, 915 + skb_frag_page(nfrag), 914 916 rx->offset, rx->status, PAGE_SIZE); 915 917 916 918 skb_shinfo(nskb)->nr_frags = 0;