diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/ipmr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index 4a8d99bca441..465459d59b21 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
@@ -561,8 +561,10 @@ static int ipmr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert) | |||
561 | And all this only to mangle msg->im_msgtype and | 561 | And all this only to mangle msg->im_msgtype and |
562 | to set msg->im_mbz to "mbz" :-) | 562 | to set msg->im_mbz to "mbz" :-) |
563 | */ | 563 | */ |
564 | msg = (struct igmpmsg*)skb_push(skb, sizeof(struct iphdr)); | 564 | skb_push(skb, sizeof(struct iphdr)); |
565 | skb->nh.raw = skb->h.raw = (u8*)msg; | 565 | skb_reset_network_header(skb); |
566 | skb->h.raw = skb->data; | ||
567 | msg = (struct igmpmsg *)skb->nh.raw; | ||
566 | memcpy(msg, skb_network_header(pkt), sizeof(struct iphdr)); | 568 | memcpy(msg, skb_network_header(pkt), sizeof(struct iphdr)); |
567 | msg->im_msgtype = IGMPMSG_WHOLEPKT; | 569 | msg->im_msgtype = IGMPMSG_WHOLEPKT; |
568 | msg->im_mbz = 0; | 570 | msg->im_mbz = 0; |