diff options
Diffstat (limited to 'net/ipv4/fou.c')
-rw-r--r-- | net/ipv4/fou.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c index b038f563baa4..1ca1586a7e46 100644 --- a/net/ipv4/fou.c +++ b/net/ipv4/fou.c | |||
@@ -121,6 +121,7 @@ static int gue_udp_recv(struct sock *sk, struct sk_buff *skb) | |||
121 | struct guehdr *guehdr; | 121 | struct guehdr *guehdr; |
122 | void *data; | 122 | void *data; |
123 | u16 doffset = 0; | 123 | u16 doffset = 0; |
124 | u8 proto_ctype; | ||
124 | 125 | ||
125 | if (!fou) | 126 | if (!fou) |
126 | return 1; | 127 | return 1; |
@@ -210,13 +211,14 @@ static int gue_udp_recv(struct sock *sk, struct sk_buff *skb) | |||
210 | if (unlikely(guehdr->control)) | 211 | if (unlikely(guehdr->control)) |
211 | return gue_control_message(skb, guehdr); | 212 | return gue_control_message(skb, guehdr); |
212 | 213 | ||
214 | proto_ctype = guehdr->proto_ctype; | ||
213 | __skb_pull(skb, sizeof(struct udphdr) + hdrlen); | 215 | __skb_pull(skb, sizeof(struct udphdr) + hdrlen); |
214 | skb_reset_transport_header(skb); | 216 | skb_reset_transport_header(skb); |
215 | 217 | ||
216 | if (iptunnel_pull_offloads(skb)) | 218 | if (iptunnel_pull_offloads(skb)) |
217 | goto drop; | 219 | goto drop; |
218 | 220 | ||
219 | return -guehdr->proto_ctype; | 221 | return -proto_ctype; |
220 | 222 | ||
221 | drop: | 223 | drop: |
222 | kfree_skb(skb); | 224 | kfree_skb(skb); |