aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/rtnetlink.c
diff options
context:
space:
mode:
authorMichal Kubeček <mkubecek@suse.cz>2015-03-23 15:14:00 +0100
committerDavid S. Miller <davem@davemloft.net>2015-03-23 22:38:24 -0400
commitd0c294c53a771ae7e84506dfbd8c18c30f078735 (patch)
treeb62e37cf9a4ae8d7bce4410f5a21983ed2025b6d /net/core/rtnetlink.c
parentbnx2x: Fix statistics locking scheme (diff)
downloadlinux-dev-d0c294c53a771ae7e84506dfbd8c18c30f078735.tar.xz
linux-dev-d0c294c53a771ae7e84506dfbd8c18c30f078735.zip
tcp: prevent fetching dst twice in early demux code
On s390x, gcc 4.8 compiles this part of tcp_v6_early_demux() struct dst_entry *dst = sk->sk_rx_dst; if (dst) dst = dst_check(dst, inet6_sk(sk)->rx_dst_cookie); to code reading sk->sk_rx_dst twice, once for the test and once for the argument of ip6_dst_check() (dst_check() is inline). This allows ip6_dst_check() to be called with null first argument, causing a crash. Protect sk->sk_rx_dst access by READ_ONCE() both in IPv4 and IPv6 TCP early demux code. Fixes: 41063e9dd119 ("ipv4: Early TCP socket demux.") Fixes: c7109986db3c ("ipv6: Early TCP socket demux") Signed-off-by: Michal Kubecek <mkubecek@suse.cz> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/rtnetlink.c')
0 files changed, 0 insertions, 0 deletions