projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
cc89c32
)
net: ip, diag -- Adjust raw_abort to use unlocked __udp_disconnect
author
Cyrill Gorcunov
<
[email protected]
>
Tue, 1 Nov 2016 20:05:00 +0000
(23:05 +0300)
committer
David S. Miller
<
[email protected]
>
Wed, 2 Nov 2016 19:25:16 +0000
(15:25 -0400)
While being preparing patches for killing raw sockets via
diag netlink interface I noticed that my runs are stuck:
| [root@pcs7 ~]# cat /proc/`pidof ss`/stack
| [<
ffffffff816d1a76
>] __lock_sock+0x80/0xc4
| [<
ffffffff816d206a
>] lock_sock_nested+0x47/0x95
| [<
ffffffff8179ded6
>] udp_disconnect+0x19/0x33
| [<
ffffffff8179b517
>] raw_abort+0x33/0x42
| [<
ffffffff81702322
>] sock_diag_destroy+0x4d/0x52
which has not been the case before. I narrowed it down to the commit
| commit
286c72deabaa240b7eebbd99496ed3324d69f3c0
| Author: Eric Dumazet <
[email protected]
>
| Date: Thu Oct 20 09:39:40 2016 -0700
|
| udp: must lock the socket in udp_disconnect()
where we start locking the socket for different reason.
So the raw_abort escaped the renaming and we have to
fix this typo using __udp_disconnect instead.
Fixes: 286c72deabaa ("udp: must lock the socket in udp_disconnect()")
CC: David S. Miller <
[email protected]
>
CC: Eric Dumazet <
[email protected]
>
CC: David Ahern <
[email protected]
>
CC: Alexey Kuznetsov <
[email protected]
>
CC: James Morris <
[email protected]
>
CC: Hideaki YOSHIFUJI <
[email protected]
>
CC: Patrick McHardy <
[email protected]
>
CC: Andrey Vagin <
[email protected]
>
CC: Stephen Hemminger <
[email protected]
>
Signed-off-by: Cyrill Gorcunov <
[email protected]
>
Acked-by: Eric Dumazet <
[email protected]
>
Signed-off-by: David S. Miller <
[email protected]
>
net/ipv4/raw.c
patch
|
blob
|
history
diff --git
a/net/ipv4/raw.c
b/net/ipv4/raw.c
index d78d738fb1720881ad1b681cc80564f1312f2c6f..6a0bd68a565b170e3ae850412f533e9eff806ff0 100644
(file)
--- a/
net/ipv4/raw.c
+++ b/
net/ipv4/raw.c
@@
-920,7
+920,7
@@
int raw_abort(struct sock *sk, int err)
sk->sk_err = err;
sk->sk_error_report(sk);
- udp_disconnect(sk, 0);
+
__
udp_disconnect(sk, 0);
release_sock(sk);