Skip to contentSkip to conversation

Patch "ipv6: sctp: clone options to avoid use after free" has been added to the 4.3-stable tree

PATCH [email protected] 1 participant 1 message Dec 31, 2015

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ipv6: sctp: clone options to avoid use after free

to the 4.3-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
ipv6-sctp-clone-options-to-avoid-use-after-free.patch
and it can be found in the queue-4.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Wed Dec 30 19:48:47 PST 2015

From: Eric Dumazet <[email protected]>
Date: Wed, 9 Dec 2015 07:25:06 -0800
Subject: ipv6: sctp: clone options to avoid use after free

From: Eric Dumazet <[email protected]>

[ Upstream commit 9470e24f35ab81574da54e69df90c1eb4a96b43f ]

SCTP is lacking proper np->opt cloning at accept() time.

TCP and DCCP use ipv6_dup_options() helper, do the same in SCTP.

We might later factorize this code in a common helper to avoid future mistakes.

---
 net/sctp/ipv6.c |    8 ++++++++
 1 file changed, 8 insertions(+)
net/sctp/ipv6.c +8 -0
@@ -635,6 +635,7 @@ static struct sock *sctp_v6_create_accep
 	struct sock *newsk;
 	struct ipv6_pinfo *newnp, *np = inet6_sk(sk);
 	struct sctp6_sock *newsctp6sk;
+	struct ipv6_txoptions *opt;
 
 	newsk = sk_alloc(sock_net(sk), PF_INET6, GFP_KERNEL, sk->sk_prot, 0);
 	if (!newsk)
@@ -654,6 +655,13 @@ static struct sock *sctp_v6_create_accep
 
 	memcpy(newnp, np, sizeof(struct ipv6_pinfo));
 
+	rcu_read_lock();
+	opt = rcu_dereference(np->opt);
+	if (opt)
+		opt = ipv6_dup_options(newsk, opt);
+	RCU_INIT_POINTER(newnp->opt, opt);
+	rcu_read_unlock();
+
 	/* Initialize sk's sport, dport, rcv_saddr and daddr for getsockname()
 	 * and getpeername().
 	 */

Patches currently in stable-queue which might be from [email protected] are

queue-4.3/inet-tcp-fix-inetpeer_set_addr_v4.patch queue-4.3/ipv6-sctp-clone-options-to-avoid-use-after-free.patch queue-4.3/tcp-restore-fastopen-with-no-data-in-syn-packet.patch queue-4.3/net_sched-make-qdisc_tree_decrease_qlen-work-for-non-mq.patch queue-4.3/net-fix-ip-early-demux-races.patch