From: Matt Mackall Avoid some alignment traps. Signed-off-by: Matt Mackall Signed-off-by: Andrew Morton --- 25-akpm/net/core/netpoll.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff -puN net/core/netpoll.c~netpoll-fix-unaligned-accesses net/core/netpoll.c --- 25/net/core/netpoll.c~netpoll-fix-unaligned-accesses Thu Aug 26 16:34:18 2004 +++ 25-akpm/net/core/netpoll.c Thu Aug 26 16:34:18 2004 @@ -21,6 +21,7 @@ #include #include #include +#include /* * We maintain a small pool of fully-sized skbs, to make sure the @@ -207,17 +208,17 @@ void netpoll_send_udp(struct netpoll *np iph = (struct iphdr *)skb_push(skb, sizeof(*iph)); - iph->version = 4; - iph->ihl = 5; + /* iph->version = 4; iph->ihl = 5; */ + put_unaligned(0x54, (unsigned char *)iph); iph->tos = 0; - iph->tot_len = htons(ip_len); + put_unaligned(htonl(ip_len), &(iph->tot_len)); iph->id = 0; iph->frag_off = 0; iph->ttl = 64; iph->protocol = IPPROTO_UDP; iph->check = 0; - iph->saddr = htonl(np->local_ip); - iph->daddr = htonl(np->remote_ip); + put_unaligned(htonl(np->local_ip), &(iph->saddr)); + put_unaligned(htonl(np->remote_ip), &(iph->daddr)); iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); eth = (struct ethhdr *) skb_push(skb, ETH_HLEN); _