ACK/APPLIED: [PATCH] ping: implement proper locking
Juerg Haefliger
juerg.haefliger at canonical.com
Mon Jul 23 13:35:46 UTC 2018
On 07/23/2018 12:47 PM, Paolo Pisati wrote:
> From: Eric Dumazet <edumazet at google.com>
>
> 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 at google.com>
> Reported-by: Daniel Jiang <danieljiang0415 at gmail.com>
> Reported-by: Solar Designer <solar at openwall.com>
> Reported-by: Andrey Konovalov <andreyknvl at google.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit 43a6684519ab0a6c52024b5e25322476cabad893)
> Signed-off-by: Paolo Pisati <paolo.pisati at canonical.com>
Acked-by: Juerg Haefliger <juergh at canonical.com>
Applied to trusty master-next.
...Juerg
> ---
> net/ipv4/ping.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c
> index 9161342..71a35e1 100644
> --- a/net/ipv4/ping.c
> +++ b/net/ipv4/ping.c
> @@ -150,17 +150,18 @@ void ping_hash(struct sock *sk)
> void ping_unhash(struct sock *sk)
> {
> struct inet_sock *isk = inet_sk(sk);
> +
> pr_debug("ping_unhash(isk=%p,isk->num=%u)\n", isk, isk->inet_num);
> + write_lock_bh(&ping_table.lock);
> if (sk_hashed(sk)) {
> - write_lock_bh(&ping_table.lock);
> hlist_nulls_del(&sk->sk_nulls_node);
> sk_nulls_node_init(&sk->sk_nulls_node);
> sock_put(sk);
> isk->inet_num = 0;
> isk->inet_sport = 0;
> sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
> - write_unlock_bh(&ping_table.lock);
> }
> + write_unlock_bh(&ping_table.lock);
> }
> EXPORT_SYMBOL_GPL(ping_unhash);
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20180723/a8a5c8da/attachment.sig>
More information about the kernel-team
mailing list