]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
inet: tcp: fix inetpeer_set_addr_v4()
authorEric Dumazet <edumazet@google.com>
Wed, 16 Dec 2015 04:56:44 +0000 (20:56 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Dec 2015 05:14:12 +0000 (00:14 -0500)
David Ahern added a vif field in the a4 part of inetpeer_addr struct.

This broke IPv4 TCP fast open client side and more generally tcp metrics
cache, because inetpeer_addr_cmp() is now comparing two u32 instead of
one.

inetpeer_set_addr_v4() needs to properly init vif field, otherwise
the comparison result depends on uninitialized data.

Fixes: 192132b9a034 ("net: Add support for VRFs to inetpeer cache")
Reported-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/inetpeer.h

index 4a6009d4486b9cfc914d583c5065a3be3d23fa7e..235c7811a86a1df748d838c6b4fd453cea0cbf40 100644 (file)
@@ -78,6 +78,7 @@ void inet_initpeers(void) __init;
 static inline void inetpeer_set_addr_v4(struct inetpeer_addr *iaddr, __be32 ip)
 {
        iaddr->a4.addr = ip;
+       iaddr->a4.vif = 0;
        iaddr->family = AF_INET;
 }