Structure assignment have to be aligned just like any assignment, and the skb could point to anything. So take the safe route and use a memcpy().
Signed-off-by: Pierre Ossman <[EMAIL PROTECTED]> --- diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 272c69e..a7e2ec9 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -783,7 +783,7 @@ static void icmp_echo(struct sk_buff *skb) if (!sysctl_icmp_echo_ignore_all) { struct icmp_bxm icmp_param; - icmp_param.data.icmph = *icmp_hdr(skb); + memcpy(&icmp_param.data.icmph, icmp_hdr(skb), sizeof(struct icmphdr)); icmp_param.data.icmph.type = ICMP_ECHOREPLY; icmp_param.skb = skb; icmp_param.offset = 0; @@ -819,7 +819,7 @@ static void icmp_timestamp(struct sk_buff *skb) icmp_param.data.times[2] = icmp_param.data.times[1]; if (skb_copy_bits(skb, 0, &icmp_param.data.times[0], 4)) BUG(); - icmp_param.data.icmph = *icmp_hdr(skb); + memcpy(&icmp_param.data.icmph, icmp_hdr(skb), sizeof(struct icmphdr)); icmp_param.data.icmph.type = ICMP_TIMESTAMPREPLY; icmp_param.data.icmph.code = 0; icmp_param.skb = skb;
signature.asc
Description: PGP signature