netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] ipset patches for nf
@ 2017-02-19 18:24 Jozsef Kadlecsik
  2017-02-19 18:24 ` [PATCH 1/2] Fix bug: sometimes valid entries in hash:* types of sets were evicted Jozsef Kadlecsik
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Jozsef Kadlecsik @ 2017-02-19 18:24 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Pablo Neira Ayuso

Hi Pablo,

Please apply the next patches for ipset in your nf branch.
Both patches should go into the stable kernel branches as well,
because these are important bugfixes:

* Sometimes valid entries in hash:* types of sets were evicted
  due to a typo in an index. The wrong evictions happen when
  entries are deleted from the set and the bucket is shrinked.
  Bug was reported by Eric Ewanco and the patch fixes
  netfilter bugzilla id #1119.
* Fixing of a null pointer exception when someone wants to add an
  entry to an empty list type of set and specifies an add before/after
  option. The fix is from Vishwanath Pai.

Best regards,
Jozsef

The following changes since commit f95d7a46bc5722767c30ee223c8b67dd0f2e8793:

  netfilter: ctnetlink: Fix regression in CTA_HELP processing (2017-02-06 12:49:05 +0100)

are available in the git repository at:

  git://blackhole.kfki.hu/nf master

for you to fetch changes up to 40b446a1d8af17274746ff7079aa0a618dffbac3:

  netfilter: ipset: Null pointer exception in ipset list:set (2017-02-19 19:08:47 +0100)

----------------------------------------------------------------
Jozsef Kadlecsik (1):
      Fix bug: sometimes valid entries in hash:* types of sets were evicted

Vishwanath Pai (1):
      netfilter: ipset: Null pointer exception in ipset list:set

 net/netfilter/ipset/ip_set_hash_gen.h | 2 +-
 net/netfilter/ipset/ip_set_list_set.c | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] Fix bug: sometimes valid entries in hash:* types of sets were evicted
  2017-02-19 18:24 [PATCH 0/2] ipset patches for nf Jozsef Kadlecsik
@ 2017-02-19 18:24 ` Jozsef Kadlecsik
  2017-02-19 18:24 ` [PATCH 2/2] netfilter: ipset: Null pointer exception in ipset list:set Jozsef Kadlecsik
  2017-02-21 13:05 ` [PATCH 0/2] ipset patches for nf Pablo Neira Ayuso
  2 siblings, 0 replies; 10+ messages in thread
From: Jozsef Kadlecsik @ 2017-02-19 18:24 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Pablo Neira Ayuso

Wrong index was used and therefore when shrinking a hash bucket at
deleting an entry, valid entries could be evicted as well.
Thanks to Eric Ewanco for the thorough bugreport.

Fixes netfilter bugzilla #1119

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
---
 net/netfilter/ipset/ip_set_hash_gen.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/netfilter/ipset/ip_set_hash_gen.h b/net/netfilter/ipset/ip_set_hash_gen.h
index 1b05d4a..f236c0b 100644
--- a/net/netfilter/ipset/ip_set_hash_gen.h
+++ b/net/netfilter/ipset/ip_set_hash_gen.h
@@ -897,7 +897,7 @@ struct htype {
 					continue;
 				data = ahash_data(n, j, dsize);
 				memcpy(tmp->value + k * dsize, data, dsize);
-				set_bit(j, tmp->used);
+				set_bit(k, tmp->used);
 				k++;
 			}
 			tmp->pos = k;
-- 
1.8.5.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] netfilter: ipset: Null pointer exception in ipset list:set
  2017-02-19 18:24 [PATCH 0/2] ipset patches for nf Jozsef Kadlecsik
  2017-02-19 18:24 ` [PATCH 1/2] Fix bug: sometimes valid entries in hash:* types of sets were evicted Jozsef Kadlecsik
@ 2017-02-19 18:24 ` Jozsef Kadlecsik
  2017-02-21 13:05 ` [PATCH 0/2] ipset patches for nf Pablo Neira Ayuso
  2 siblings, 0 replies; 10+ messages in thread
From: Jozsef Kadlecsik @ 2017-02-19 18:24 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Pablo Neira Ayuso

From: Vishwanath Pai <vpai@akamai.com>

If we use before/after to add an element to an empty list it will cause
a kernel panic.

$> cat crash.restore
create a hash:ip
create b hash:ip
create test list:set timeout 5 size 4
add test b before a

$> ipset -R < crash.restore

Executing the above will crash the kernel.

Signed-off-by: Vishwanath Pai <vpai@akamai.com>
Reviewed-by: Josh Hunt <johunt@akamai.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
---
 net/netfilter/ipset/ip_set_list_set.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c
index 51077c5..178d4eb 100644
--- a/net/netfilter/ipset/ip_set_list_set.c
+++ b/net/netfilter/ipset/ip_set_list_set.c
@@ -260,11 +260,14 @@ struct list_set {
 		else
 			prev = e;
 	}
+
+	/* If before/after is used on an empty set */
+	if ((d->before > 0 && !next) ||
+	    (d->before < 0 && !prev))
+		return -IPSET_ERR_REF_EXIST;
+
 	/* Re-add already existing element */
 	if (n) {
-		if ((d->before > 0 && !next) ||
-		    (d->before < 0 && !prev))
-			return -IPSET_ERR_REF_EXIST;
 		if (!flag_exist)
 			return -IPSET_ERR_EXIST;
 		/* Update extensions */
-- 
1.8.5.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] ipset patches for nf
  2017-02-19 18:24 [PATCH 0/2] ipset patches for nf Jozsef Kadlecsik
  2017-02-19 18:24 ` [PATCH 1/2] Fix bug: sometimes valid entries in hash:* types of sets were evicted Jozsef Kadlecsik
  2017-02-19 18:24 ` [PATCH 2/2] netfilter: ipset: Null pointer exception in ipset list:set Jozsef Kadlecsik
@ 2017-02-21 13:05 ` Pablo Neira Ayuso
  2 siblings, 0 replies; 10+ messages in thread
From: Pablo Neira Ayuso @ 2017-02-21 13:05 UTC (permalink / raw)
  To: Jozsef Kadlecsik; +Cc: netfilter-devel

On Sun, Feb 19, 2017 at 07:24:14PM +0100, Jozsef Kadlecsik wrote:
> Hi Pablo,
> 
> Please apply the next patches for ipset in your nf branch.
> Both patches should go into the stable kernel branches as well,
> because these are important bugfixes:
> 
> * Sometimes valid entries in hash:* types of sets were evicted
>   due to a typo in an index. The wrong evictions happen when
>   entries are deleted from the set and the bucket is shrinked.
>   Bug was reported by Eric Ewanco and the patch fixes
>   netfilter bugzilla id #1119.
> * Fixing of a null pointer exception when someone wants to add an
>   entry to an empty list type of set and specifies an add before/after
>   option. The fix is from Vishwanath Pai.
> 
> Best regards,
> Jozsef
> 
> The following changes since commit f95d7a46bc5722767c30ee223c8b67dd0f2e8793:
> 
>   netfilter: ctnetlink: Fix regression in CTA_HELP processing (2017-02-06 12:49:05 +0100)
> 
> are available in the git repository at:
> 
>   git://blackhole.kfki.hu/nf master

Pulled, thanks Jozsef.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 0/2] ipset patches for nf
@ 2020-02-22 11:30 Jozsef Kadlecsik
  2020-02-26 13:02 ` Pablo Neira Ayuso
  0 siblings, 1 reply; 10+ messages in thread
From: Jozsef Kadlecsik @ 2020-02-22 11:30 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Pablo Neira Ayuso

Hi Pablo,

Please consider to apply the next two patches to the nf tree. The first one
is larger than usual, but the issue could not be solved simpler. Also, it's
a resend of the patch I submitted a few days ago, with a one line fix on
top of that: the size of the comment extensions was not taken into account
at reporting the full size of the set.

- Fix "INFO: rcu detected stall in hash_xxx" reports of syzbot
  by introducing region locking and using workqueue instead of timer based
  gc of timed out entries in hash types of sets in ipset.
- Fix the forceadd evaluation path - the bug was also uncovered by the syzbot.

Best regards,
Jozsef

The following changes since commit 83d0585f91da441a0b11bc5ff93f4cda56de6703:

  Merge branch 'Fix-reconnection-latency-caused-by-FIN-ACK-handling-race' (2020-02-02 13:45:05 -0800)

are available in the Git repository at:

  git://blackhole.kfki.hu/nf 8af1c6fbd923987799

for you to fetch changes up to 8af1c6fbd9239877998c7f5a591cb2c88d41fb66:

  netfilter: ipset: Fix forceadd evaluation path (2020-02-22 12:13:45 +0100)

----------------------------------------------------------------
Jozsef Kadlecsik (2):
      netfilter: ipset: Fix "INFO: rcu detected stall in hash_xxx" reports
      netfilter: ipset: Fix forceadd evaluation path

 include/linux/netfilter/ipset/ip_set.h |  11 +-
 net/netfilter/ipset/ip_set_core.c      |  34 +-
 net/netfilter/ipset/ip_set_hash_gen.h  | 635 +++++++++++++++++++++++----------
 3 files changed, 474 insertions(+), 206 deletions(-)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] ipset patches for nf
  2020-02-22 11:30 Jozsef Kadlecsik
@ 2020-02-26 13:02 ` Pablo Neira Ayuso
  0 siblings, 0 replies; 10+ messages in thread
From: Pablo Neira Ayuso @ 2020-02-26 13:02 UTC (permalink / raw)
  To: Jozsef Kadlecsik; +Cc: netfilter-devel

On Sat, Feb 22, 2020 at 12:30:03PM +0100, Jozsef Kadlecsik wrote:
> Hi Pablo,
> 
> Please consider to apply the next two patches to the nf tree. The first one
> is larger than usual, but the issue could not be solved simpler. Also, it's
> a resend of the patch I submitted a few days ago, with a one line fix on
> top of that: the size of the comment extensions was not taken into account
> at reporting the full size of the set.
> 
> - Fix "INFO: rcu detected stall in hash_xxx" reports of syzbot
>   by introducing region locking and using workqueue instead of timer based
>   gc of timed out entries in hash types of sets in ipset.
> - Fix the forceadd evaluation path - the bug was also uncovered by the syzbot.

Pulled, thanks Jozsef.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 0/2] ipset patches for nf
@ 2022-12-30 12:24 Jozsef Kadlecsik
  2022-12-30 12:42 ` Jozsef Kadlecsik
  2023-01-02 14:13 ` Pablo Neira Ayuso
  0 siblings, 2 replies; 10+ messages in thread
From: Jozsef Kadlecsik @ 2022-12-30 12:24 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Pablo Neira Ayuso

Hi Pablo,

Please pull the next patches into your nf tree.

- The first patch fixes a hang when 0/0 subnets is added to a
  hash:net,port,net type of set. Except hash:net,port,net and
  hash:net,iface, the set types don't support 0/0 and the auxiliary
  functions rely on this fact. So 0/0 needs a special handling in
  hash:net,port,net which was missing (hash:net,iface was not affected
  by this bug).
- When adding/deleting large number of elements in one step in ipset,
  it can take a reasonable amount of time and can result in soft lockup
  errors. This patch is a complete rework of the previous version in order
  to use a smaller internal batch limit and at the same time removing
  the external hard limit to add arbitrary number of elements in one step.

Please note, while the second patch removes half of the first patch, the
remaining part of the first patch is still important.

Best regards,
Jozsef

The following changes since commit 123b99619cca94bdca0bf7bde9abe28f0a0dfe06:

  netfilter: nf_tables: honor set timeout and garbage collection updates (2022-12-22 10:36:37 +0100)

are available in the Git repository at:

  git://blackhole.kfki.hu/nf 82f6ab0989c5aa14e

for you to fetch changes up to 82f6ab0989c5aa14e89f2689f47f89589733f2b2:

  netfilter: ipset: Rework long task execution when adding/deleting entries (2022-12-30 13:11:23 +0100)

----------------------------------------------------------------
Jozsef Kadlecsik (2):
      netfilter: ipset: fix hash:net,port,net hang with /0 subnet
      netfilter: ipset: Rework long task execution when adding/deleting entries

 include/linux/netfilter/ipset/ip_set.h       |  2 +-
 net/netfilter/ipset/ip_set_core.c            |  7 ++---
 net/netfilter/ipset/ip_set_hash_ip.c         | 14 +++++-----
 net/netfilter/ipset/ip_set_hash_ipmark.c     | 13 ++++-----
 net/netfilter/ipset/ip_set_hash_ipport.c     | 13 ++++-----
 net/netfilter/ipset/ip_set_hash_ipportip.c   | 13 ++++-----
 net/netfilter/ipset/ip_set_hash_ipportnet.c  | 13 +++++----
 net/netfilter/ipset/ip_set_hash_net.c        | 17 +++++-------
 net/netfilter/ipset/ip_set_hash_netiface.c   | 15 +++++------
 net/netfilter/ipset/ip_set_hash_netnet.c     | 23 +++++-----------
 net/netfilter/ipset/ip_set_hash_netport.c    | 19 +++++--------
 net/netfilter/ipset/ip_set_hash_netportnet.c | 40 +++++++++++++++-------------
 12 files changed, 89 insertions(+), 100 deletions(-)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] ipset patches for nf
  2022-12-30 12:24 Jozsef Kadlecsik
@ 2022-12-30 12:42 ` Jozsef Kadlecsik
  2023-01-02 14:12   ` Pablo Neira Ayuso
  2023-01-02 14:13 ` Pablo Neira Ayuso
  1 sibling, 1 reply; 10+ messages in thread
From: Jozsef Kadlecsik @ 2022-12-30 12:42 UTC (permalink / raw)
  To: netfilter-devel; +Cc: Pablo Neira Ayuso

On Fri, 30 Dec 2022, Jozsef Kadlecsik wrote:

> Please pull the next patches into your nf tree.
> 
> - The first patch fixes a hang when 0/0 subnets is added to a
>   hash:net,port,net type of set. Except hash:net,port,net and
>   hash:net,iface, the set types don't support 0/0 and the auxiliary
>   functions rely on this fact. So 0/0 needs a special handling in
>   hash:net,port,net which was missing (hash:net,iface was not affected
>   by this bug).
> - When adding/deleting large number of elements in one step in ipset,
>   it can take a reasonable amount of time and can result in soft lockup
>   errors. This patch is a complete rework of the previous version in order
>   to use a smaller internal batch limit and at the same time removing
>   the external hard limit to add arbitrary number of elements in one step.
> 
> Please note, while the second patch removes half of the first patch, the
> remaining part of the first patch is still important.

In the versions I sent the first patch was collapsed with the part for 
hash:net,port,net from the second patch. So now for proper functionality 
it depends on the second one. If it is not OK, just let me know!

Best regards,
Jozsef

> The following changes since commit 123b99619cca94bdca0bf7bde9abe28f0a0dfe06:
> 
>   netfilter: nf_tables: honor set timeout and garbage collection updates (2022-12-22 10:36:37 +0100)
> 
> are available in the Git repository at:
> 
>   git://blackhole.kfki.hu/nf 82f6ab0989c5aa14e
> 
> for you to fetch changes up to 82f6ab0989c5aa14e89f2689f47f89589733f2b2:
> 
>   netfilter: ipset: Rework long task execution when adding/deleting entries (2022-12-30 13:11:23 +0100)
> 
> ----------------------------------------------------------------
> Jozsef Kadlecsik (2):
>       netfilter: ipset: fix hash:net,port,net hang with /0 subnet
>       netfilter: ipset: Rework long task execution when adding/deleting entries
> 
>  include/linux/netfilter/ipset/ip_set.h       |  2 +-
>  net/netfilter/ipset/ip_set_core.c            |  7 ++---
>  net/netfilter/ipset/ip_set_hash_ip.c         | 14 +++++-----
>  net/netfilter/ipset/ip_set_hash_ipmark.c     | 13 ++++-----
>  net/netfilter/ipset/ip_set_hash_ipport.c     | 13 ++++-----
>  net/netfilter/ipset/ip_set_hash_ipportip.c   | 13 ++++-----
>  net/netfilter/ipset/ip_set_hash_ipportnet.c  | 13 +++++----
>  net/netfilter/ipset/ip_set_hash_net.c        | 17 +++++-------
>  net/netfilter/ipset/ip_set_hash_netiface.c   | 15 +++++------
>  net/netfilter/ipset/ip_set_hash_netnet.c     | 23 +++++-----------
>  net/netfilter/ipset/ip_set_hash_netport.c    | 19 +++++--------
>  net/netfilter/ipset/ip_set_hash_netportnet.c | 40 +++++++++++++++-------------
>  12 files changed, 89 insertions(+), 100 deletions(-)
> 

-
E-mail  : kadlec@blackhole.kfki.hu, kadlecsik.jozsef@wigner.hu
PGP key : https://wigner.hu/~kadlec/pgp_public_key.txt
Address : Wigner Research Centre for Physics
          H-1525 Budapest 114, POB. 49, Hungary

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] ipset patches for nf
  2022-12-30 12:42 ` Jozsef Kadlecsik
@ 2023-01-02 14:12   ` Pablo Neira Ayuso
  0 siblings, 0 replies; 10+ messages in thread
From: Pablo Neira Ayuso @ 2023-01-02 14:12 UTC (permalink / raw)
  To: Jozsef Kadlecsik; +Cc: netfilter-devel

Hi Jozsef,

On Fri, Dec 30, 2022 at 01:42:01PM +0100, Jozsef Kadlecsik wrote:
> On Fri, 30 Dec 2022, Jozsef Kadlecsik wrote:
> 
> > Please pull the next patches into your nf tree.
> > 
> > - The first patch fixes a hang when 0/0 subnets is added to a
> >   hash:net,port,net type of set. Except hash:net,port,net and
> >   hash:net,iface, the set types don't support 0/0 and the auxiliary
> >   functions rely on this fact. So 0/0 needs a special handling in
> >   hash:net,port,net which was missing (hash:net,iface was not affected
> >   by this bug).
> > - When adding/deleting large number of elements in one step in ipset,
> >   it can take a reasonable amount of time and can result in soft lockup
> >   errors. This patch is a complete rework of the previous version in order
> >   to use a smaller internal batch limit and at the same time removing
> >   the external hard limit to add arbitrary number of elements in one step.
> > 
> > Please note, while the second patch removes half of the first patch, the
> > remaining part of the first patch is still important.
> 
> In the versions I sent the first patch was collapsed with the part for 
> hash:net,port,net from the second patch. So now for proper functionality 
> it depends on the second one. If it is not OK, just let me know!

If you think this is the best course of action, then I am fine with this.

Thanks for explaining.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] ipset patches for nf
  2022-12-30 12:24 Jozsef Kadlecsik
  2022-12-30 12:42 ` Jozsef Kadlecsik
@ 2023-01-02 14:13 ` Pablo Neira Ayuso
  1 sibling, 0 replies; 10+ messages in thread
From: Pablo Neira Ayuso @ 2023-01-02 14:13 UTC (permalink / raw)
  To: Jozsef Kadlecsik; +Cc: netfilter-devel

On Fri, Dec 30, 2022 at 01:24:36PM +0100, Jozsef Kadlecsik wrote:
> Hi Pablo,
> 
> Please pull the next patches into your nf tree.
> 
> - The first patch fixes a hang when 0/0 subnets is added to a
>   hash:net,port,net type of set. Except hash:net,port,net and
>   hash:net,iface, the set types don't support 0/0 and the auxiliary
>   functions rely on this fact. So 0/0 needs a special handling in
>   hash:net,port,net which was missing (hash:net,iface was not affected
>   by this bug).
> - When adding/deleting large number of elements in one step in ipset,
>   it can take a reasonable amount of time and can result in soft lockup
>   errors. This patch is a complete rework of the previous version in order
>   to use a smaller internal batch limit and at the same time removing
>   the external hard limit to add arbitrary number of elements in one step.

Series applied to nf.git

I added a Fixes: tag to the first patch and removed a duplicated
Signed-off-by: line in the second.

Just a minor nitpick, nothing important.

Thanks for your fixes.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-01-02 14:13 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-19 18:24 [PATCH 0/2] ipset patches for nf Jozsef Kadlecsik
2017-02-19 18:24 ` [PATCH 1/2] Fix bug: sometimes valid entries in hash:* types of sets were evicted Jozsef Kadlecsik
2017-02-19 18:24 ` [PATCH 2/2] netfilter: ipset: Null pointer exception in ipset list:set Jozsef Kadlecsik
2017-02-21 13:05 ` [PATCH 0/2] ipset patches for nf Pablo Neira Ayuso
  -- strict thread matches above, loose matches on Subject: below --
2020-02-22 11:30 Jozsef Kadlecsik
2020-02-26 13:02 ` Pablo Neira Ayuso
2022-12-30 12:24 Jozsef Kadlecsik
2022-12-30 12:42 ` Jozsef Kadlecsik
2023-01-02 14:12   ` Pablo Neira Ayuso
2023-01-02 14:13 ` Pablo Neira Ayuso

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).