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 79e98e21cdd7..12ce6c526d72 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; |
@@ -212,13 +213,14 @@ static int gue_udp_recv(struct sock *sk, struct sk_buff *skb) | |||
212 | if (unlikely(guehdr->control)) | 213 | if (unlikely(guehdr->control)) |
213 | return gue_control_message(skb, guehdr); | 214 | return gue_control_message(skb, guehdr); |
214 | 215 | ||
216 | proto_ctype = guehdr->proto_ctype; | ||
215 | __skb_pull(skb, sizeof(struct udphdr) + hdrlen); | 217 | __skb_pull(skb, sizeof(struct udphdr) + hdrlen); |
216 | skb_reset_transport_header(skb); | 218 | skb_reset_transport_header(skb); |
217 | 219 | ||
218 | if (iptunnel_pull_offloads(skb)) | 220 | if (iptunnel_pull_offloads(skb)) |
219 | goto drop; | 221 | goto drop; |
220 | 222 | ||
221 | return -guehdr->proto_ctype; | 223 | return -proto_ctype; |
222 | 224 | ||
223 | drop: | 225 | drop: |
224 | kfree_skb(skb); | 226 | kfree_skb(skb); |