Re: [PATCH net] netfilter: xt_hashlimit: fix lock imbalance

2018-02-16 Thread Pablo Neira Ayuso
On Mon, Feb 12, 2018 at 08:11:48AM -0800, Eric Dumazet wrote:
> From: Eric Dumazet 
> 
> syszkaller found that rcu was not held in hashlimit_mt_common()
> 
> We only need to enable BH at this point.

Applied, thanks Eric!

Sorry, this didn't get into my patchwork [1] for some reason, so it
got lost.

[1] https://patchwork.ozlabs.org/project/netfilter-devel/


Re: [PATCH net] netfilter: xt_hashlimit: fix lock imbalance

2018-02-14 Thread Vishwanath Pai
On 02/12/2018 11:11 AM, Eric Dumazet wrote:
> From: Eric Dumazet 
> 
> syszkaller found that rcu was not held in hashlimit_mt_common()
> 
> We only need to enable BH at this point.
> 
> Fixes: bea74641e378 ("netfilter: xt_hashlimit: add rate match mode")
> Signed-off-by: Eric Dumazet 
> Reported-by: syzkaller 
> ---
>  net/netfilter/xt_hashlimit.c |2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
> index 
> ca6847403ca218c478d208080aab3e3c92a0a615..1fea48b4182f7cd5669b9c5e7100b2735cc590e7
>  100644
> --- a/net/netfilter/xt_hashlimit.c
> +++ b/net/netfilter/xt_hashlimit.c
> @@ -774,7 +774,7 @@ hashlimit_mt_common(const struct sk_buff *skb, struct 
> xt_action_param *par,
>   if (!dh->rateinfo.prev_window &&
>   (dh->rateinfo.current_rate <= dh->rateinfo.burst)) {
>   spin_unlock(>lock);
> - rcu_read_unlock_bh();
> + local_bh_enable();
>   return !(cfg->mode & XT_HASHLIMIT_INVERT);
>   } else {
>   goto overlimit;
> 

Thanks for fixing this.

Acked-by: Vishwanath Pai 

-Vishwanath


[PATCH net] netfilter: xt_hashlimit: fix lock imbalance

2018-02-12 Thread Eric Dumazet
From: Eric Dumazet 

syszkaller found that rcu was not held in hashlimit_mt_common()

We only need to enable BH at this point.

Fixes: bea74641e378 ("netfilter: xt_hashlimit: add rate match mode")
Signed-off-by: Eric Dumazet 
Reported-by: syzkaller 
---
 net/netfilter/xt_hashlimit.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
index 
ca6847403ca218c478d208080aab3e3c92a0a615..1fea48b4182f7cd5669b9c5e7100b2735cc590e7
 100644
--- a/net/netfilter/xt_hashlimit.c
+++ b/net/netfilter/xt_hashlimit.c
@@ -774,7 +774,7 @@ hashlimit_mt_common(const struct sk_buff *skb, struct 
xt_action_param *par,
if (!dh->rateinfo.prev_window &&
(dh->rateinfo.current_rate <= dh->rateinfo.burst)) {
spin_unlock(>lock);
-   rcu_read_unlock_bh();
+   local_bh_enable();
return !(cfg->mode & XT_HASHLIMIT_INVERT);
} else {
goto overlimit;