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