|
@@ -582,6 +582,9 @@ static inline int ip6gre_xmit_ipv6(struct sk_buff *skb, struct net_device *dev)
|
|
return -1;
|
|
return -1;
|
|
|
|
|
|
offset = ip6_tnl_parse_tlv_enc_lim(skb, skb_network_header(skb));
|
|
offset = ip6_tnl_parse_tlv_enc_lim(skb, skb_network_header(skb));
|
|
|
|
+ /* ip6_tnl_parse_tlv_enc_lim() might have reallocated skb->head */
|
|
|
|
+ ipv6h = ipv6_hdr(skb);
|
|
|
|
+
|
|
if (offset > 0) {
|
|
if (offset > 0) {
|
|
struct ipv6_tlv_tnl_enc_lim *tel;
|
|
struct ipv6_tlv_tnl_enc_lim *tel;
|
|
tel = (struct ipv6_tlv_tnl_enc_lim *)&skb_network_header(skb)[offset];
|
|
tel = (struct ipv6_tlv_tnl_enc_lim *)&skb_network_header(skb)[offset];
|