]>
Commit | Line | Data |
---|---|---|
5c38cac1 GKH |
1 | From foo@baz Fri Nov 18 11:35:46 CET 2016 |
2 | From: Eric Dumazet <edumazet@google.com> | |
3 | Date: Fri, 28 Oct 2016 13:40:24 -0700 | |
4 | Subject: net: clear sk_err_soft in sk_clone_lock() | |
5 | ||
6 | From: Eric Dumazet <edumazet@google.com> | |
7 | ||
8 | ||
9 | [ Upstream commit e551c32d57c88923f99f8f010e89ca7ed0735e83 ] | |
10 | ||
11 | At accept() time, it is possible the parent has a non zero | |
12 | sk_err_soft, leftover from a prior error. | |
13 | ||
14 | Make sure we do not leave this value in the child, as it | |
15 | makes future getsockopt(SO_ERROR) calls quite unreliable. | |
16 | ||
17 | Signed-off-by: Eric Dumazet <edumazet@google.com> | |
18 | Acked-by: Soheil Hassas Yeganeh <soheil@google.com> | |
19 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
20 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
21 | --- | |
22 | net/core/sock.c | 1 + | |
23 | 1 file changed, 1 insertion(+) | |
24 | ||
25 | --- a/net/core/sock.c | |
26 | +++ b/net/core/sock.c | |
27 | @@ -1563,6 +1563,7 @@ struct sock *sk_clone_lock(const struct | |
28 | RCU_INIT_POINTER(newsk->sk_reuseport_cb, NULL); | |
29 | ||
30 | newsk->sk_err = 0; | |
31 | + newsk->sk_err_soft = 0; | |
32 | newsk->sk_priority = 0; | |
33 | newsk->sk_incoming_cpu = raw_smp_processor_id(); | |
34 | atomic64_set(&newsk->sk_cookie, 0); |