Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > fc11cd6e1c513a17304da94a5390f3cd > files > 4289

kernel-2.6.18-194.11.1.el5.src.rpm

From: Aron Griffis <aron@hp.com>
Subject: BZ 212505 kernel unaligned access (kernel)
Date: Tue, 5 Dec 2006 13:32:47 -0500
Bugzilla: 212505
Message-Id: <20061205183247.GA19349@fc.hp.com>
Changelog: Xen: ia64 kernel unaligned access


# HG changeset patch
# User kfraser@localhost.localdomain
# Date 1161190744 -3600
# Node ID 02fba295d843686e9df0b5a346be5dc452358a87
# Parent  70c869c376189761d30fe3fb6afcc762d7b38e1c
[NET] front/back: Avoid unaligned accesses to IP datagrams. These
cause noisy warnings on IA64.

Signed-off-by: Kouya SHIMURA <kouya@jp.fujitsu.com>
Signed-off-by: Akio Takebe <takebe_akio@jp.fujitsu.com>

original changeset: 11815 (xen-unstable)

diff -r 70c869c37618 -r 02fba295d843 drivers/xen/netback/netback.c
--- a/drivers/xen/netback/netback.c	Thu Oct 26 16:49:07 2006 -0400
+++ b/drivers/xen/netback/netback.c	Wed Oct 18 17:59:04 2006 +0100
@@ -188,7 +188,7 @@ static struct sk_buff *netbk_copy_skb(st
 	if (unlikely(!nskb))
 		goto err;
 
-	skb_reserve(nskb, 16);
+	skb_reserve(nskb, 16 + NET_IP_ALIGN);
 	headlen = nskb->end - nskb->data;
 	if (headlen > skb_headlen(skb))
 		headlen = skb_headlen(skb);
@@ -1211,7 +1211,7 @@ static void net_tx_action(unsigned long 
 			    ret < MAX_SKB_FRAGS) ?
 			PKT_PROT_LEN : txreq.size;
 
-		skb = alloc_skb(data_len+16, GFP_ATOMIC);
+		skb = alloc_skb(data_len + 16 + NET_IP_ALIGN, GFP_ATOMIC);
 		if (unlikely(skb == NULL)) {
 			DPRINTK("Can't allocate a skb in start_xmit.\n");
 			netbk_tx_err(netif, &txreq, i);
@@ -1219,7 +1219,7 @@ static void net_tx_action(unsigned long 
 		}
 
 		/* Packets passed to netif_rx() must have some headroom. */
-		skb_reserve(skb, 16);
+		skb_reserve(skb, 16 + NET_IP_ALIGN);
 
 		if (extras[XEN_NETIF_EXTRA_TYPE_GSO - 1].type) {
 			struct netif_extra_info *gso;
diff -r 70c869c37618 -r 02fba295d843 drivers/xen/netfront/netfront.c
--- a/drivers/xen/netfront/netfront.c	Thu Oct 26 16:49:07 2006 -0400
+++ b/drivers/xen/netfront/netfront.c	Wed Oct 18 17:59:04 2006 +0100
@@ -684,7 +684,7 @@ static void network_alloc_rx_buffers(str
 		 * necessary here.
 		 * 16 bytes added as necessary headroom for netif_receive_skb.
 		 */
-		skb = alloc_skb(RX_COPY_THRESHOLD + 16,
+		skb = alloc_skb(RX_COPY_THRESHOLD + 16 + NET_IP_ALIGN,
 				GFP_ATOMIC | __GFP_NOWARN);
 		if (unlikely(!skb))
 			goto no_skb;
@@ -702,7 +702,7 @@ no_skb:
 			break;
 		}
 
-		skb_reserve(skb, 16); /* mimic dev_alloc_skb() */
+		skb_reserve(skb, 16 + NET_IP_ALIGN); /* mimic dev_alloc_skb() */
 		skb_shinfo(skb)->frags[0].page = page;
 		skb_shinfo(skb)->nr_frags = 1;
 		__skb_queue_tail(&np->rx_batch, skb);