flow_dissector: Use same pointer for IPv4 and IPv6 addresses
authorAlexander Duyck <aduyck@mirantis.com>
Wed, 24 Feb 2016 17:29:57 +0000 (09:29 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Feb 2016 18:58:05 +0000 (13:58 -0500)
The IPv6 parsing was using a local pointer when it could use the same
pointer as the IPv4 portion of the code since the key_addrs can support
both IPv4 and IPv6 as it is just a pointer.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Acked-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/flow_dissector.c

index 6288153d7f368382325ffacf04ca92e3f4919169..7c7b8739b8b8b4af053366b414912785466213a2 100644 (file)
@@ -220,13 +220,12 @@ ipv6:
 
                if (dissector_uses_key(flow_dissector,
                                       FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
-                       struct flow_dissector_key_ipv6_addrs *key_ipv6_addrs;
-
-                       key_ipv6_addrs = skb_flow_dissector_target(flow_dissector,
-                                                                  FLOW_DISSECTOR_KEY_IPV6_ADDRS,
-                                                                  target_container);
+                       key_addrs = skb_flow_dissector_target(flow_dissector,
+                                                             FLOW_DISSECTOR_KEY_IPV6_ADDRS,
+                                                             target_container);
 
-                       memcpy(key_ipv6_addrs, &iph->saddr, sizeof(*key_ipv6_addrs));
+                       memcpy(&key_addrs->v6addrs, &iph->saddr,
+                              sizeof(key_addrs->v6addrs));
                        key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
                }