Subject: Re: [Patch net] xt_RATEEST: acquire xt_rateest_mutex for hash insert

From: Eric Dumazet <[email-masked]>
Date: Wed, 31 Jan 2018 17:44:46 -0800

On Wed, 2018-01-31 at 16:26 -0800, Cong Wang wrote:
> rateest_hash is supposed to be protected by xt_rateest_mutex.
> 
> Reported-by: <[email-masked]>
> Fixes: 5859034d7eb8 ("[NETFILTER]: x_tables: add RATEEST target")
> Cc: Pablo Neira Ayuso <[email-masked]>
> Signed-off-by: Cong Wang <[email-masked]>
> ---
>  net/netfilter/xt_RATEEST.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/net/netfilter/xt_RATEEST.c b/net/netfilter/xt_RATEEST.c
> index 498b54fd04d7..83ec3a282755 100644
> --- a/net/netfilter/xt_RATEEST.c
> +++ b/net/netfilter/xt_RATEEST.c
> @@ -36,7 +36,9 @@ static void xt_rateest_hash_insert(struct xt_rateest *est)
>  	unsigned int h;
>  
>  	h = xt_rateest_hash(est->name);
> +	mutex_lock(&xt_rateest_mutex);
>  	hlist_add_head(&est->list, &rateest_hash[h]);
> +	mutex_unlock(&xt_rateest_mutex);
>  }

We probably should make this module netns aware, otherwise bad things
will happen.

(It seems multiple threads could run, so getting the mutex twice 
(xt_rateest_lookup then xt_rateest_hash_insert() is racy)