aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/ip.h
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-07-14 08:10:22 +0200
committerBen Hutchings <ben@decadent.org.uk>2015-10-13 03:46:12 +0100
commitc1a7dedbcb0b60ecbcda0d2398ad5d2b078c9f47 (patch)
treeceeb9883d850281b835275aaa3befc7043fedbff /include/net/ip.h
parent58a5897a53d535bf95523e6f381f88116217f5ca (diff)
downloadkernel_samsung_smdk4412-c1a7dedbcb0b60ecbcda0d2398ad5d2b078c9f47.zip
kernel_samsung_smdk4412-c1a7dedbcb0b60ecbcda0d2398ad5d2b078c9f47.tar.gz
kernel_samsung_smdk4412-c1a7dedbcb0b60ecbcda0d2398ad5d2b078c9f47.tar.bz2
ipv6: lock socket in ip6_datagram_connect()
[ Upstream commit 03645a11a570d52e70631838cb786eb4253eb463 ] ip6_datagram_connect() is doing a lot of socket changes without socket being locked. This looks wrong, at least for udp_lib_rehash() which could corrupt lists because of concurrent udp_sk(sk)->udp_portaddr_hash accesses. Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net> [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'include/net/ip.h')
-rw-r--r--include/net/ip.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/ip.h b/include/net/ip.h
index 1ee535b..2c7c5a9 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -138,6 +138,7 @@ static inline struct sk_buff *ip_finish_skb(struct sock *sk, struct flowi4 *fl4)
}
/* datagram.c */
+int __ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);
extern int ip4_datagram_connect(struct sock *sk,
struct sockaddr *uaddr, int addr_len);