فهرست منبع

virtio: more fallout from scatterlist changes.

This fixes OOPS in network driver when CONFIG_DEBUG_SG=y.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell 17 سال پیش
والد
کامیت
4d125de3a5
1فایلهای تغییر یافته به همراه3 افزوده شده و 0 حذف شده
  1. 3 0
      drivers/net/virtio_net.c

+ 3 - 0
drivers/net/virtio_net.c

@@ -146,6 +146,7 @@ static void try_fill_recv(struct virtnet_info *vi)
 	struct scatterlist sg[1+MAX_SKB_FRAGS];
 	struct scatterlist sg[1+MAX_SKB_FRAGS];
 	int num, err;
 	int num, err;
 
 
+	sg_init_table(sg, 1+MAX_SKB_FRAGS);
 	for (;;) {
 	for (;;) {
 		skb = netdev_alloc_skb(vi->dev, MAX_PACKET_LEN);
 		skb = netdev_alloc_skb(vi->dev, MAX_PACKET_LEN);
 		if (unlikely(!skb))
 		if (unlikely(!skb))
@@ -231,6 +232,8 @@ static int start_xmit(struct sk_buff *skb, struct net_device *dev)
 	const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest;
 	const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest;
 	DECLARE_MAC_BUF(mac);
 	DECLARE_MAC_BUF(mac);
 
 
+	sg_init_table(sg, 1+MAX_SKB_FRAGS);
+
 	pr_debug("%s: xmit %p %s\n", dev->name, skb, print_mac(mac, dest));
 	pr_debug("%s: xmit %p %s\n", dev->name, skb, print_mac(mac, dest));
 
 
 	free_old_xmit_skbs(vi);
 	free_old_xmit_skbs(vi);