diff options
author | David S. Miller <davem@davemloft.net> | 2016-06-30 05:03:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-30 05:03:36 -0400 |
commit | ee58b57100ca953da7320c285315a95db2f7053d (patch) | |
tree | 77b815a31240adc4d6326346908137fc6c2c3a96 /net/ipv4/gre_demux.c | |
parent | 6f30e8b022c8e3a722928ddb1a2ae0be852fcc0e (diff) | |
parent | e7bdea7750eb2a64aea4a08fa5c0a31719c8155d (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Several cases of overlapping changes, except the packet scheduler
conflicts which deal with the addition of the free list parameter
to qdisc_enqueue().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/gre_demux.c')
-rw-r--r-- | net/ipv4/gre_demux.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c index c4c3e439f424..b798862b6be5 100644 --- a/net/ipv4/gre_demux.c +++ b/net/ipv4/gre_demux.c | |||
@@ -62,26 +62,26 @@ EXPORT_SYMBOL_GPL(gre_del_protocol); | |||
62 | 62 | ||
63 | /* Fills in tpi and returns header length to be pulled. */ | 63 | /* Fills in tpi and returns header length to be pulled. */ |
64 | int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, | 64 | int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, |
65 | bool *csum_err, __be16 proto) | 65 | bool *csum_err, __be16 proto, int nhs) |
66 | { | 66 | { |
67 | const struct gre_base_hdr *greh; | 67 | const struct gre_base_hdr *greh; |
68 | __be32 *options; | 68 | __be32 *options; |
69 | int hdr_len; | 69 | int hdr_len; |
70 | 70 | ||
71 | if (unlikely(!pskb_may_pull(skb, sizeof(struct gre_base_hdr)))) | 71 | if (unlikely(!pskb_may_pull(skb, nhs + sizeof(struct gre_base_hdr)))) |
72 | return -EINVAL; | 72 | return -EINVAL; |
73 | 73 | ||
74 | greh = (struct gre_base_hdr *)skb_transport_header(skb); | 74 | greh = (struct gre_base_hdr *)(skb->data + nhs); |
75 | if (unlikely(greh->flags & (GRE_VERSION | GRE_ROUTING))) | 75 | if (unlikely(greh->flags & (GRE_VERSION | GRE_ROUTING))) |
76 | return -EINVAL; | 76 | return -EINVAL; |
77 | 77 | ||
78 | tpi->flags = gre_flags_to_tnl_flags(greh->flags); | 78 | tpi->flags = gre_flags_to_tnl_flags(greh->flags); |
79 | hdr_len = gre_calc_hlen(tpi->flags); | 79 | hdr_len = gre_calc_hlen(tpi->flags); |
80 | 80 | ||
81 | if (!pskb_may_pull(skb, hdr_len)) | 81 | if (!pskb_may_pull(skb, nhs + hdr_len)) |
82 | return -EINVAL; | 82 | return -EINVAL; |
83 | 83 | ||
84 | greh = (struct gre_base_hdr *)skb_transport_header(skb); | 84 | greh = (struct gre_base_hdr *)(skb->data + nhs); |
85 | tpi->proto = greh->protocol; | 85 | tpi->proto = greh->protocol; |
86 | 86 | ||
87 | options = (__be32 *)(greh + 1); | 87 | options = (__be32 *)(greh + 1); |