ping: implement proper locking 76/155176/1
authorEric Dumazet <edumazet@google.com>
Sat, 25 Mar 2017 02:36:13 +0000 (19:36 -0700)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 12 Oct 2017 08:14:45 +0000 (17:14 +0900)
commitbb2dbaea55fcb32750b778ac47c594c2ab9f0855
treee8ff19ab1c6aec22f78130e238a9e3b4871c515a
parent653756932975bded4c5a1e2b873650600b6778eb
ping: implement proper locking

commit 43a6684519ab0a6c52024b5e25322476cabad893 upstream.

We got a report of yet another bug in ping

http://www.openwall.com/lists/oss-security/2017/03/24/6

->disconnect() is not called with socket lock held.

Fix this by acquiring ping rwlock earlier.

Thanks to Daniel, Alexander and Andrey for letting us know this problem.

Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Daniel Jiang <danieljiang0415@gmail.com>
Reported-by: Solar Designer <solar@openwall.com>
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[wt: the function is ping_v4_unhash() in 3.10]
Signed-off-by: Willy Tarreau <w@1wt.eu>
[sw0312.kim: cherry-pick from linux-3.10.y to fix CVE-2017-2671]
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Change-Id: I97d728e025dd7a76ef7333c2f2e07d6fa9c1d064
net/ipv4/ping.c