Message ID | 1513305998-20750-1-git-send-email-yanhaishuang@cmss.chinamobile.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Series | ip6_gre: fix a pontential issue in ip6erspan_rcv | expand |
On Thu, Dec 14, 2017 at 6:46 PM, Haishuang Yan <yanhaishuang@cmss.chinamobile.com> wrote: > pskb_may_pull() can change skb->data, so we need to load ipv6h/ershdr at > the right place. > > Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support") > Cc: William Tu <u9012063@gmail.com> > Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> > --- Thanks for the patch! Acked-by: William Tu <u9012063@gmail.com>
From: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> Date: Fri, 15 Dec 2017 10:46:38 +0800 > pskb_may_pull() can change skb->data, so we need to load ipv6h/ershdr at > the right place. > > Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support") > Cc: William Tu <u9012063@gmail.com> > Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> The mentioned commit ID only exists in net-next, and this patch does not apply cleanly there.
> On 2017年12月16日, at 上午3:11, David Miller <davem@davemloft.net> wrote: > > From: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> > Date: Fri, 15 Dec 2017 10:46:38 +0800 > >> pskb_may_pull() can change skb->data, so we need to load ipv6h/ershdr at >> the right place. >> >> Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support") >> Cc: William Tu <u9012063@gmail.com> >> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> > > The mentioned commit ID only exists in net-next, and this patch does not apply > cleanly there. > Okay, I will send v2 commit rebased on latest master and with prefix [net-next]. Thanks.
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index 68e7eef..eab4b56 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -506,12 +506,12 @@ static int ip6erspan_rcv(struct sk_buff *skb, int gre_hdr_len, struct ip6_tnl *tunnel; __be32 index; - ipv6h = ipv6_hdr(skb); - ershdr = (struct erspanhdr *)skb->data; - if (unlikely(!pskb_may_pull(skb, sizeof(*ershdr)))) return PACKET_REJECT; + ipv6h = ipv6_hdr(skb); + ershdr = (struct erspanhdr *)skb->data; + tpi->key = cpu_to_be32(ntohs(ershdr->session_id) & ID_MASK); index = ershdr->md.index;
pskb_may_pull() can change skb->data, so we need to load ipv6h/ershdr at the right place. Fixes: 5a963eb61b7c ("ip6_gre: Add ERSPAN native tunnel support") Cc: William Tu <u9012063@gmail.com> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> --- net/ipv6/ip6_gre.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)