| From 23af5c08bf4b42ca3fd0255dd6191d7037a01439 Mon Sep 17 00:00:00 2001 |
| From: Eric Dumazet <edumazet@google.com> |
| Date: Thu, 26 Sep 2013 08:44:06 -0700 |
| Subject: net: flow_dissector: fix thoff for IPPROTO_AH |
| |
| From: Eric Dumazet <edumazet@google.com> |
| |
| [ Upstream commit b86783587b3d1d552326d955acee37eac48800f1 ] |
| |
| In commit 8ed781668dd49 ("flow_keys: include thoff into flow_keys for |
| later usage"), we missed that existing code was using nhoff as a |
| temporary variable that could not always contain transport header |
| offset. |
| |
| This is not a problem for TCP/UDP because port offset (@poff) |
| is 0 for these protocols. |
| |
| Signed-off-by: Eric Dumazet <edumazet@google.com> |
| Cc: Daniel Borkmann <dborkman@redhat.com> |
| Cc: Nikolay Aleksandrov <nikolay@redhat.com> |
| Acked-by: Nikolay Aleksandrov <nikolay@redhat.com> |
| Acked-by: Daniel Borkmann <dborkman@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/core/flow_dissector.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/net/core/flow_dissector.c |
| +++ b/net/core/flow_dissector.c |
| @@ -150,8 +150,8 @@ ipv6: |
| if (poff >= 0) { |
| __be32 *ports, _ports; |
| |
| - nhoff += poff; |
| - ports = skb_header_pointer(skb, nhoff, sizeof(_ports), &_ports); |
| + ports = skb_header_pointer(skb, nhoff + poff, |
| + sizeof(_ports), &_ports); |
| if (ports) |
| flow->ports = *ports; |
| } |