diff options
Diffstat (limited to 'net/ipv4/ah4.c')
-rw-r--r-- | net/ipv4/ah4.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c index 7194eb40b6d0..95ddbbd1552a 100644 --- a/net/ipv4/ah4.c +++ b/net/ipv4/ah4.c | |||
@@ -154,7 +154,7 @@ static int ah_input(struct xfrm_state *x, struct sk_buff *skb) | |||
154 | ah = (struct ip_auth_hdr*)skb->data; | 154 | ah = (struct ip_auth_hdr*)skb->data; |
155 | iph = skb->nh.iph; | 155 | iph = skb->nh.iph; |
156 | 156 | ||
157 | ihl = skb->data - skb->nh.raw; | 157 | ihl = skb->data - skb_network_header(skb); |
158 | memcpy(work_buf, iph, ihl); | 158 | memcpy(work_buf, iph, ihl); |
159 | 159 | ||
160 | iph->ttl = 0; | 160 | iph->ttl = 0; |
@@ -181,7 +181,8 @@ static int ah_input(struct xfrm_state *x, struct sk_buff *skb) | |||
181 | } | 181 | } |
182 | } | 182 | } |
183 | ((struct iphdr*)work_buf)->protocol = ah->nexthdr; | 183 | ((struct iphdr*)work_buf)->protocol = ah->nexthdr; |
184 | skb->h.raw = memcpy(skb->nh.raw += ah_hlen, work_buf, ihl); | 184 | skb->nh.raw += ah_hlen; |
185 | skb->h.raw = memcpy(skb_network_header(skb), work_buf, ihl); | ||
185 | __skb_pull(skb, ah_hlen + ihl); | 186 | __skb_pull(skb, ah_hlen + ihl); |
186 | 187 | ||
187 | return 0; | 188 | return 0; |