All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Michal Kubecek <mkubecek@suse.cz>,
	Eric Dumazet <edumazet@google.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 3.19 01/27] tcp: prevent fetching dst twice in early demux code
Date: Sun, 26 Apr 2015 16:15:32 +0200	[thread overview]
Message-ID: <20150426134603.427305307@linuxfoundation.org> (raw)
In-Reply-To: <20150426134603.371719585@linuxfoundation.org>

3.19-stable review patch.  If anyone has any objections, please let me know.

------------------

From: =?UTF-8?q?Michal=20Kube=C4=8Dek?= <mkubecek@suse.cz>

[ Upstream commit d0c294c53a771ae7e84506dfbd8c18c30f078735 ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ipv4/tcp_ipv4.c |    2 +-
 net/ipv6/tcp_ipv6.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1516,7 +1516,7 @@ void tcp_v4_early_demux(struct sk_buff *
 		skb->sk = sk;
 		skb->destructor = sock_edemux;
 		if (sk->sk_state != TCP_TIME_WAIT) {
-			struct dst_entry *dst = sk->sk_rx_dst;
+			struct dst_entry *dst = READ_ONCE(sk->sk_rx_dst);
 
 			if (dst)
 				dst = dst_check(dst, 0);
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1583,7 +1583,7 @@ static void tcp_v6_early_demux(struct sk
 		skb->sk = sk;
 		skb->destructor = sock_edemux;
 		if (sk->sk_state != TCP_TIME_WAIT) {
-			struct dst_entry *dst = sk->sk_rx_dst;
+			struct dst_entry *dst = READ_ONCE(sk->sk_rx_dst);
 
 			if (dst)
 				dst = dst_check(dst, inet6_sk(sk)->rx_dst_cookie);



  reply	other threads:[~2015-04-26 14:16 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-26 14:15 [PATCH 3.19 00/27] 3.19.6-stable review Greg Kroah-Hartman
2015-04-26 14:15 ` Greg Kroah-Hartman [this message]
2015-04-26 14:15 ` [PATCH 3.19 02/27] rocker: handle non-bridge master change Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 03/27] net/mlx4_en: Call register_netdevice in the proper location Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 04/27] ipv6: Dont reduce hop limit for an interface Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 05/27] tun: return proper error code from tun_do_read Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 06/27] net: tcp6: fix double call of tcp_v6_fill_cb() Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 07/27] bonding: Bonding Overriding Configuration logic restored Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 08/27] openvswitch: Return vport module ref before destruction Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 09/27] xen-netfront: transmit fully GSO-sized packets Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 10/27] tcp: fix FRTO undo on cumulative ACK of SACKed range Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 11/27] ipv6: protect skb->sk accesses from recursive dereference inside the stack Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 12/27] net/mlx4_core: Fix error message deprecation for ConnectX-2 cards Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 13/27] tcp: tcp_make_synack() should clear skb->tstamp Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 14/27] bnx2x: Fix busy_poll vs netpoll Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 15/27] bpf: fix verifier memory corruption Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 16/27] Revert "net: Reset secmark when scrubbing packet" Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 18/27] udptunnels: Call handle_offloads after inserting vlan tag Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 21/27] tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 23/27] staging: comedi: adv_pci1710: fix AI INSN_READ for non-zero channel Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 24/27] mm/hugetlb: reduce arch dependent code around follow_huge_* Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 25/27] mm/hugetlb: take page table lock in follow_huge_pmd() Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 26/27] rtlwifi: rtl8192ee: Fix handling of new style descriptors Greg Kroah-Hartman
2015-04-26 14:15 ` [PATCH 3.19 27/27] fs: take i_mutex during prepare_binprm for set[ug]id executables Greg Kroah-Hartman
2015-04-26 20:04 ` [PATCH 3.19 00/27] 3.19.6-stable review Guenter Roeck
2015-04-27 17:20 ` Shuah Khan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150426134603.427305307@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkubecek@suse.cz \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.