From db63c9889c616bad39b8426d504cd65d570d5bb7 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Sat, 1 Nov 2008 21:19:18 -0700 Subject: [PATCH] --- yaml --- r: 121665 b: refs/heads/master c: c37ccc0d4e2a4ee52f1a40cff1be0049f2104bba h: refs/heads/master i: 121663: 78ca330cbf7fa184f2052f1af4fc38e070898ed4 v: v3 --- [refs] | 2 +- trunk/net/ipv4/udp.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c6fa20b74683..5722ef44d447 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7e3a42a12c4b9d99bfe81cb929cadf0e08a37c49 +refs/heads/master: c37ccc0d4e2a4ee52f1a40cff1be0049f2104bba diff --git a/trunk/net/ipv4/udp.c b/trunk/net/ipv4/udp.c index bcb5def2b09e..7e4d9c871153 100644 --- a/trunk/net/ipv4/udp.c +++ b/trunk/net/ipv4/udp.c @@ -189,6 +189,11 @@ int udp_lib_get_port(struct sock *sk, unsigned short snum, inet_sk(sk)->num = snum; sk->sk_hash = snum; if (sk_unhashed(sk)) { + /* + * We need that previous write to sk->sk_hash committed + * before write to sk->next done in following add_node() variant + */ + smp_wmb(); sk_add_node_rcu(sk, &hslot->head); sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); }