* [PATCH 0/4] ipset patches for nf-next
@ 2012-09-21 20:49 Jozsef Kadlecsik
0 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2012-09-21 20:49 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
Hi Pablo,
Here follows the ipset patches against your nf-next tree: some cleanup
and new features. (These patches depend on the bugfixes against the stable
tree.) You can pull the changes from
git://blackhole.kfki.hu/nf-next master
Best regards,
Jozsef
Jozsef Kadlecsik (4):
netfilter: ipset: Add /0 network support to hash:net,iface type
netfilter: ipset: Include supported revisions in module description
netfilter: ipset: Coding style fixes
netfilter: ipset: Support to match elements marked with "nomatch"
include/linux/netfilter/ipset/ip_set.h | 15 +++++-
include/linux/netfilter/ipset/ip_set_ahash.h | 2 +-
net/netfilter/ipset/ip_set_bitmap_ip.c | 9 +++-
net/netfilter/ipset/ip_set_bitmap_ipmac.c | 13 +++--
net/netfilter/ipset/ip_set_bitmap_port.c | 9 +++-
net/netfilter/ipset/ip_set_core.c | 15 +++++-
net/netfilter/ipset/ip_set_hash_ip.c | 9 +++-
net/netfilter/ipset/ip_set_hash_ipport.c | 9 +++-
net/netfilter/ipset/ip_set_hash_ipportip.c | 9 +++-
net/netfilter/ipset/ip_set_hash_ipportnet.c | 24 ++++++----
net/netfilter/ipset/ip_set_hash_net.c | 21 +++++----
net/netfilter/ipset/ip_set_hash_netiface.c | 62 +++++++++++++------------
net/netfilter/ipset/ip_set_hash_netport.c | 23 +++++----
net/netfilter/ipset/ip_set_list_set.c | 9 +++-
net/netfilter/xt_set.c | 22 +++++++++
15 files changed, 163 insertions(+), 88 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/4] ipset patches for nf-next
@ 2014-08-24 17:49 Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 1/4] netfilter: ipset: Removed invalid IPSET_ATTR_MARKMASK validation Jozsef Kadlecsik
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2014-08-24 17:49 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
Hi Pablo,
Please consider to apply the next series of patches:
- Dan Carpenter reported that the static checker emits a warning
about integer overflows in ip_set_list_set.c, fixed by me
- missing-field-initializer warnings resolved, from Mark Rustad
- In netnet and netportnet hash types the range support for IPv4
was broken, fixed by Sergey Popovich
- A smatch warning about IPSET_ATTR_MARKMASK validation is fixed
by Vytas Dauksa.
You can pull the changes from
git://blackhole.kfki.hu/nf-next master
Thanks,
Jozsef
----------------------------------------------------------------
The following changes since commit afc5be3079796b024823bad42dc5ebf716453575:
netfilter: nft_meta: Add cpu attribute support (2014-08-24 14:08:46 +0200)
are available in the git repository at:
git://blackhole.kfki.hu/nf-next master
for you to fetch changes up to 1b05756c48ea07ced9604ef01d11194d936da163:
netfilter: ipset: Fix warn: integer overflows 'sizeof(*map) + size * set->dsize' (2014-08-24 19:33:10 +0200)
----------------------------------------------------------------
Jozsef Kadlecsik (1):
netfilter: ipset: Fix warn: integer overflows 'sizeof(*map) + size * set->dsize'
Mark Rustad (1):
netfilter: ipset: Resolve missing-field-initializer warnings
Sergey Popovich (1):
netfilter: ipset: netnet,netportnet: Fix value range support for IPv4
Vytas Dauksa (1):
netfilter: ipset: Removed invalid IPSET_ATTR_MARKMASK validation
include/linux/netfilter/ipset/ip_set_list.h | 1 +
net/netfilter/ipset/ip_set_bitmap_ip.c | 4 ++--
net/netfilter/ipset/ip_set_bitmap_ipmac.c | 4 ++--
net/netfilter/ipset/ip_set_bitmap_port.c | 4 ++--
net/netfilter/ipset/ip_set_hash_gen.h | 2 +-
net/netfilter/ipset/ip_set_hash_ip.c | 8 ++++----
net/netfilter/ipset/ip_set_hash_ipport.c | 8 ++++----
net/netfilter/ipset/ip_set_hash_ipportip.c | 8 ++++----
net/netfilter/ipset/ip_set_hash_netnet.c | 13 +++++++------
net/netfilter/ipset/ip_set_hash_netportnet.c | 6 ++++--
net/netfilter/ipset/ip_set_list_set.c | 4 +++-
11 files changed, 34 insertions(+), 28 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/4] netfilter: ipset: Removed invalid IPSET_ATTR_MARKMASK validation
2014-08-24 17:49 [PATCH 0/4] ipset patches for nf-next Jozsef Kadlecsik
@ 2014-08-24 17:49 ` Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 2/4] netfilter: ipset: netnet,netportnet: Fix value range support for IPv4 Jozsef Kadlecsik
` (3 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2014-08-24 17:49 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
From: Vytas Dauksa <vytas.dauksa@smoothwall.net>
Markmask is an u32, hence it can't be greater then 4294967295 ( i.e.
0xffffffff ). This was causing smatch warning:
net/netfilter/ipset/ip_set_hash_gen.h:1084 hash_ipmark_create() warn:
impossible condition '(markmask > 4294967295) => (0-u32max > u32max)'
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 61c7fb0..0398a92 100644
--- a/net/netfilter/ipset/ip_set_hash_gen.h
+++ b/net/netfilter/ipset/ip_set_hash_gen.h
@@ -1093,7 +1093,7 @@ IPSET_TOKEN(HTYPE, _create)(struct net *net, struct ip_set *set,
if (tb[IPSET_ATTR_MARKMASK]) {
markmask = ntohl(nla_get_u32(tb[IPSET_ATTR_MARKMASK]));
- if ((markmask > 4294967295u) || markmask == 0)
+ if (markmask == 0)
return -IPSET_ERR_INVALID_MARKMASK;
}
#endif
--
1.8.5.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/4] netfilter: ipset: netnet,netportnet: Fix value range support for IPv4
2014-08-24 17:49 [PATCH 0/4] ipset patches for nf-next Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 1/4] netfilter: ipset: Removed invalid IPSET_ATTR_MARKMASK validation Jozsef Kadlecsik
@ 2014-08-24 17:49 ` Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 3/4] netfilter: ipset: Resolve missing-field-initializer warnings Jozsef Kadlecsik
` (2 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2014-08-24 17:49 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
From: Sergey Popovich <popovich_sergei@mail.ru>
Ranges of values are broken with hash:net,net and hash:net,port,net.
hash:net,net
============
# ipset create test-nn hash:net,net
# ipset add test-nn 10.0.10.1-10.0.10.127,10.0.0.0/8
# ipset list test-nn
Name: test-nn
Type: hash:net,net
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16960
References: 0
Members:
10.0.10.1,10.0.0.0/8
# ipset test test-nn 10.0.10.65,10.0.0.1
10.0.10.65,10.0.0.1 is NOT in set test-nn.
# ipset test test-nn 10.0.10.1,10.0.0.1
10.0.10.1,10.0.0.1 is in set test-nn.
hash:net,port,net
=================
# ipset create test-npn hash:net,port,net
# ipset add test-npn 10.0.10.1-10.0.10.127,tcp:80,10.0.0.0/8
# ipset list test-npn
Name: test-npn
Type: hash:net,port,net
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 17344
References: 0
Members:
10.0.10.8/29,tcp:80,10.0.0.0
10.0.10.16/28,tcp:80,10.0.0.0
10.0.10.2/31,tcp:80,10.0.0.0
10.0.10.64/26,tcp:80,10.0.0.0
10.0.10.32/27,tcp:80,10.0.0.0
10.0.10.4/30,tcp:80,10.0.0.0
10.0.10.1,tcp:80,10.0.0.0
# ipset list test-npn
# ipset test test-npn 10.0.10.126,tcp:80,10.0.0.2
10.0.10.126,tcp:80,10.0.0.2 is NOT in set test-npn.
# ipset test test-npn 10.0.10.126,tcp:80,10.0.0.0
10.0.10.126,tcp:80,10.0.0.0 is in set test-npn.
# ipset create test-npn hash:net,port,net
# ipset add test-npn 10.0.10.0/24,tcp:80-81,10.0.0.0/8
# ipset list test-npn
Name: test-npn
Type: hash:net,port,net
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 17024
References: 0
Members:
10.0.10.0,tcp:80,10.0.0.0
10.0.10.0,tcp:81,10.0.0.0
# ipset test test-npn 10.0.10.126,tcp:80,10.0.0.0
10.0.10.126,tcp:80,10.0.0.0 is NOT in set test-npn.
# ipset test test-npn 10.0.10.0,tcp:80,10.0.0.0
10.0.10.0,tcp:80,10.0.0.0 is in set test-npn.
Correctly setup from..to variables where no IPSET_ATTR_IP_TO{,2}
attribute is given, so in range processing loop we construct proper
cidr value. Check whenever we have no ranges and can short cut in
hash:net,net properly. Use unlikely() where appropriate, to comply
with other modules.
Signed-off-by: Sergey Popovich <popovich_sergei@mail.ru>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
---
net/netfilter/ipset/ip_set_hash_netnet.c | 13 +++++++------
net/netfilter/ipset/ip_set_hash_netportnet.c | 6 ++++--
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/net/netfilter/ipset/ip_set_hash_netnet.c b/net/netfilter/ipset/ip_set_hash_netnet.c
index 3e99987..96b1313 100644
--- a/net/netfilter/ipset/ip_set_hash_netnet.c
+++ b/net/netfilter/ipset/ip_set_hash_netnet.c
@@ -203,7 +203,7 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],
flags |= (IPSET_FLAG_NOMATCH << 16);
}
- if (adt == IPSET_TEST || !(tb[IPSET_ATTR_IP_TO] &&
+ if (adt == IPSET_TEST || !(tb[IPSET_ATTR_IP_TO] ||
tb[IPSET_ATTR_IP2_TO])) {
e.ip[0] = htonl(ip & ip_set_hostmask(e.cidr[0]));
e.ip[1] = htonl(ip2_from & ip_set_hostmask(e.cidr[1]));
@@ -219,9 +219,10 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],
return ret;
if (ip_to < ip)
swap(ip, ip_to);
- if (ip + UINT_MAX == ip_to)
+ if (unlikely(ip + UINT_MAX == ip_to))
return -IPSET_ERR_HASH_RANGE;
- }
+ } else
+ ip_set_mask_from_to(ip, ip_to, e.cidr[0]);
ip2_to = ip2_from;
if (tb[IPSET_ATTR_IP2_TO]) {
@@ -230,10 +231,10 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],
return ret;
if (ip2_to < ip2_from)
swap(ip2_from, ip2_to);
- if (ip2_from + UINT_MAX == ip2_to)
+ if (unlikely(ip2_from + UINT_MAX == ip2_to))
return -IPSET_ERR_HASH_RANGE;
-
- }
+ } else
+ ip_set_mask_from_to(ip2_from, ip2_to, e.cidr[1]);
if (retried)
ip = ntohl(h->next.ip[0]);
diff --git a/net/netfilter/ipset/ip_set_hash_netportnet.c b/net/netfilter/ipset/ip_set_hash_netportnet.c
index c0d2ba7..2f00343 100644
--- a/net/netfilter/ipset/ip_set_hash_netportnet.c
+++ b/net/netfilter/ipset/ip_set_hash_netportnet.c
@@ -257,7 +257,8 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
swap(ip, ip_to);
if (unlikely(ip + UINT_MAX == ip_to))
return -IPSET_ERR_HASH_RANGE;
- }
+ } else
+ ip_set_mask_from_to(ip, ip_to, e.cidr[0]);
port_to = port = ntohs(e.port);
if (tb[IPSET_ATTR_PORT_TO]) {
@@ -275,7 +276,8 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],
swap(ip2_from, ip2_to);
if (unlikely(ip2_from + UINT_MAX == ip2_to))
return -IPSET_ERR_HASH_RANGE;
- }
+ } else
+ ip_set_mask_from_to(ip2_from, ip2_to, e.cidr[1]);
if (retried)
ip = ntohl(h->next.ip[0]);
--
1.8.5.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/4] netfilter: ipset: Resolve missing-field-initializer warnings
2014-08-24 17:49 [PATCH 0/4] ipset patches for nf-next Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 1/4] netfilter: ipset: Removed invalid IPSET_ATTR_MARKMASK validation Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 2/4] netfilter: ipset: netnet,netportnet: Fix value range support for IPv4 Jozsef Kadlecsik
@ 2014-08-24 17:49 ` Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 4/4] netfilter: ipset: Fix warn: integer overflows 'sizeof(*map) + size * set->dsize' Jozsef Kadlecsik
2014-08-25 8:28 ` [PATCH 0/4] ipset patches for nf-next Pablo Neira Ayuso
4 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2014-08-24 17:49 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
From: Mark Rustad <mark.d.rustad@intel.com>
Resolve missing-field-initializer warnings by providing a
directed initializer.
Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
---
net/netfilter/ipset/ip_set_bitmap_ip.c | 4 ++--
net/netfilter/ipset/ip_set_bitmap_ipmac.c | 4 ++--
net/netfilter/ipset/ip_set_bitmap_port.c | 4 ++--
net/netfilter/ipset/ip_set_hash_ip.c | 8 ++++----
net/netfilter/ipset/ip_set_hash_ipport.c | 8 ++++----
net/netfilter/ipset/ip_set_hash_ipportip.c | 8 ++++----
6 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/net/netfilter/ipset/ip_set_bitmap_ip.c b/net/netfilter/ipset/ip_set_bitmap_ip.c
index 6f1f9f4..dafdb39 100644
--- a/net/netfilter/ipset/ip_set_bitmap_ip.c
+++ b/net/netfilter/ipset/ip_set_bitmap_ip.c
@@ -112,7 +112,7 @@ bitmap_ip_kadt(struct ip_set *set, const struct sk_buff *skb,
{
struct bitmap_ip *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct bitmap_ip_adt_elem e = { };
+ struct bitmap_ip_adt_elem e = { .id = 0 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
u32 ip;
@@ -132,7 +132,7 @@ bitmap_ip_uadt(struct ip_set *set, struct nlattr *tb[],
struct bitmap_ip *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
u32 ip = 0, ip_to = 0;
- struct bitmap_ip_adt_elem e = { };
+ struct bitmap_ip_adt_elem e = { .id = 0 };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
int ret = 0;
diff --git a/net/netfilter/ipset/ip_set_bitmap_ipmac.c b/net/netfilter/ipset/ip_set_bitmap_ipmac.c
index 740eabe..dbad505 100644
--- a/net/netfilter/ipset/ip_set_bitmap_ipmac.c
+++ b/net/netfilter/ipset/ip_set_bitmap_ipmac.c
@@ -203,7 +203,7 @@ bitmap_ipmac_kadt(struct ip_set *set, const struct sk_buff *skb,
{
struct bitmap_ipmac *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct bitmap_ipmac_adt_elem e = {};
+ struct bitmap_ipmac_adt_elem e = { .id = 0 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
u32 ip;
@@ -232,7 +232,7 @@ bitmap_ipmac_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct bitmap_ipmac *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct bitmap_ipmac_adt_elem e = {};
+ struct bitmap_ipmac_adt_elem e = { .id = 0 };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 ip = 0;
int ret = 0;
diff --git a/net/netfilter/ipset/ip_set_bitmap_port.c b/net/netfilter/ipset/ip_set_bitmap_port.c
index cf99676..a4b65ae 100644
--- a/net/netfilter/ipset/ip_set_bitmap_port.c
+++ b/net/netfilter/ipset/ip_set_bitmap_port.c
@@ -104,7 +104,7 @@ bitmap_port_kadt(struct ip_set *set, const struct sk_buff *skb,
{
struct bitmap_port *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct bitmap_port_adt_elem e = {};
+ struct bitmap_port_adt_elem e = { .id = 0 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
__be16 __port;
u16 port = 0;
@@ -129,7 +129,7 @@ bitmap_port_uadt(struct ip_set *set, struct nlattr *tb[],
{
struct bitmap_port *map = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct bitmap_port_adt_elem e = {};
+ struct bitmap_port_adt_elem e = { .id = 0 };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 port; /* wraparound */
u16 port_to;
diff --git a/net/netfilter/ipset/ip_set_hash_ip.c b/net/netfilter/ipset/ip_set_hash_ip.c
index dd40607..e527399 100644
--- a/net/netfilter/ipset/ip_set_hash_ip.c
+++ b/net/netfilter/ipset/ip_set_hash_ip.c
@@ -84,7 +84,7 @@ hash_ip4_kadt(struct ip_set *set, const struct sk_buff *skb,
{
const struct hash_ip *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ip4_elem e = {};
+ struct hash_ip4_elem e = { 0 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
__be32 ip;
@@ -103,7 +103,7 @@ hash_ip4_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct hash_ip *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ip4_elem e = {};
+ struct hash_ip4_elem e = { 0 };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 ip = 0, ip_to = 0, hosts;
int ret = 0;
@@ -222,7 +222,7 @@ hash_ip6_kadt(struct ip_set *set, const struct sk_buff *skb,
{
const struct hash_ip *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ip6_elem e = {};
+ struct hash_ip6_elem e = { { .all = { 0 } } };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
ip6addrptr(skb, opt->flags & IPSET_DIM_ONE_SRC, &e.ip.in6);
@@ -239,7 +239,7 @@ hash_ip6_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct hash_ip *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ip6_elem e = {};
+ struct hash_ip6_elem e = { { .all = { 0 } } };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
int ret;
diff --git a/net/netfilter/ipset/ip_set_hash_ipport.c b/net/netfilter/ipset/ip_set_hash_ipport.c
index 7597b82..f37a5ae 100644
--- a/net/netfilter/ipset/ip_set_hash_ipport.c
+++ b/net/netfilter/ipset/ip_set_hash_ipport.c
@@ -94,7 +94,7 @@ hash_ipport4_kadt(struct ip_set *set, const struct sk_buff *skb,
enum ipset_adt adt, struct ip_set_adt_opt *opt)
{
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipport4_elem e = { };
+ struct hash_ipport4_elem e = { .ip = 0 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
if (!ip_set_get_ip4_port(skb, opt->flags & IPSET_DIM_TWO_SRC,
@@ -111,7 +111,7 @@ hash_ipport4_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct hash_ipport *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipport4_elem e = { };
+ struct hash_ipport4_elem e = { .ip = 0 };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 ip, ip_to = 0, p = 0, port, port_to;
bool with_ports = false;
@@ -258,7 +258,7 @@ hash_ipport6_kadt(struct ip_set *set, const struct sk_buff *skb,
enum ipset_adt adt, struct ip_set_adt_opt *opt)
{
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipport6_elem e = { };
+ struct hash_ipport6_elem e = { .ip = { .all = { 0 } } };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
if (!ip_set_get_ip6_port(skb, opt->flags & IPSET_DIM_TWO_SRC,
@@ -275,7 +275,7 @@ hash_ipport6_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct hash_ipport *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipport6_elem e = { };
+ struct hash_ipport6_elem e = { .ip = { .all = { 0 } } };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 port, port_to;
bool with_ports = false;
diff --git a/net/netfilter/ipset/ip_set_hash_ipportip.c b/net/netfilter/ipset/ip_set_hash_ipportip.c
index 672655f..41ef00e 100644
--- a/net/netfilter/ipset/ip_set_hash_ipportip.c
+++ b/net/netfilter/ipset/ip_set_hash_ipportip.c
@@ -95,7 +95,7 @@ hash_ipportip4_kadt(struct ip_set *set, const struct sk_buff *skb,
enum ipset_adt adt, struct ip_set_adt_opt *opt)
{
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipportip4_elem e = { };
+ struct hash_ipportip4_elem e = { .ip = 0 };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
if (!ip_set_get_ip4_port(skb, opt->flags & IPSET_DIM_TWO_SRC,
@@ -113,7 +113,7 @@ hash_ipportip4_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct hash_ipportip *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipportip4_elem e = { };
+ struct hash_ipportip4_elem e = { .ip = 0 };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 ip, ip_to = 0, p = 0, port, port_to;
bool with_ports = false;
@@ -265,7 +265,7 @@ hash_ipportip6_kadt(struct ip_set *set, const struct sk_buff *skb,
enum ipset_adt adt, struct ip_set_adt_opt *opt)
{
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipportip6_elem e = { };
+ struct hash_ipportip6_elem e = { .ip = { .all = { 0 } } };
struct ip_set_ext ext = IP_SET_INIT_KEXT(skb, opt, set);
if (!ip_set_get_ip6_port(skb, opt->flags & IPSET_DIM_TWO_SRC,
@@ -283,7 +283,7 @@ hash_ipportip6_uadt(struct ip_set *set, struct nlattr *tb[],
{
const struct hash_ipportip *h = set->data;
ipset_adtfn adtfn = set->variant->adt[adt];
- struct hash_ipportip6_elem e = { };
+ struct hash_ipportip6_elem e = { .ip = { .all = { 0 } } };
struct ip_set_ext ext = IP_SET_INIT_UEXT(set);
u32 port, port_to;
bool with_ports = false;
--
1.8.5.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/4] netfilter: ipset: Fix warn: integer overflows 'sizeof(*map) + size * set->dsize'
2014-08-24 17:49 [PATCH 0/4] ipset patches for nf-next Jozsef Kadlecsik
` (2 preceding siblings ...)
2014-08-24 17:49 ` [PATCH 3/4] netfilter: ipset: Resolve missing-field-initializer warnings Jozsef Kadlecsik
@ 2014-08-24 17:49 ` Jozsef Kadlecsik
2014-08-25 8:28 ` [PATCH 0/4] ipset patches for nf-next Pablo Neira Ayuso
4 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2014-08-24 17:49 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
Dan Carpenter reported that the static checker emits the warning
net/netfilter/ipset/ip_set_list_set.c:600 init_list_set()
warn: integer overflows 'sizeof(*map) + size * set->dsize'
Limit the maximal number of elements in list type of sets.
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
---
include/linux/netfilter/ipset/ip_set_list.h | 1 +
net/netfilter/ipset/ip_set_list_set.c | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/linux/netfilter/ipset/ip_set_list.h b/include/linux/netfilter/ipset/ip_set_list.h
index 68c2aea..fe2622a 100644
--- a/include/linux/netfilter/ipset/ip_set_list.h
+++ b/include/linux/netfilter/ipset/ip_set_list.h
@@ -6,5 +6,6 @@
#define IP_SET_LIST_DEFAULT_SIZE 8
#define IP_SET_LIST_MIN_SIZE 4
+#define IP_SET_LIST_MAX_SIZE 65536
#endif /* __IP_SET_LIST_H */
diff --git a/net/netfilter/ipset/ip_set_list_set.c b/net/netfilter/ipset/ip_set_list_set.c
index 3e2317f..f87adba 100644
--- a/net/netfilter/ipset/ip_set_list_set.c
+++ b/net/netfilter/ipset/ip_set_list_set.c
@@ -597,7 +597,9 @@ init_list_set(struct net *net, struct ip_set *set, u32 size)
struct set_elem *e;
u32 i;
- map = kzalloc(sizeof(*map) + size * set->dsize, GFP_KERNEL);
+ map = kzalloc(sizeof(*map) +
+ min_t(u32, size, IP_SET_LIST_MAX_SIZE) * set->dsize,
+ GFP_KERNEL);
if (!map)
return false;
--
1.8.5.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] ipset patches for nf-next
2014-08-24 17:49 [PATCH 0/4] ipset patches for nf-next Jozsef Kadlecsik
` (3 preceding siblings ...)
2014-08-24 17:49 ` [PATCH 4/4] netfilter: ipset: Fix warn: integer overflows 'sizeof(*map) + size * set->dsize' Jozsef Kadlecsik
@ 2014-08-25 8:28 ` Pablo Neira Ayuso
4 siblings, 0 replies; 11+ messages in thread
From: Pablo Neira Ayuso @ 2014-08-25 8:28 UTC (permalink / raw)
To: Jozsef Kadlecsik; +Cc: netfilter-devel
On Sun, Aug 24, 2014 at 07:49:39PM +0200, Jozsef Kadlecsik wrote:
> Hi Pablo,
>
> Please consider to apply the next series of patches:
>
> - Dan Carpenter reported that the static checker emits a warning
> about integer overflows in ip_set_list_set.c, fixed by me
> - missing-field-initializer warnings resolved, from Mark Rustad
> - In netnet and netportnet hash types the range support for IPv4
> was broken, fixed by Sergey Popovich
> - A smatch warning about IPSET_ATTR_MARKMASK validation is fixed
> by Vytas Dauksa.
>
> You can pull the changes from
>
> git://blackhole.kfki.hu/nf-next master
Pulled. Thanks, Jozsef.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/4] ipset patches for nf-next
@ 2017-09-11 19:52 Jozsef Kadlecsik
2017-09-18 12:30 ` Pablo Neira Ayuso
0 siblings, 1 reply; 11+ messages in thread
From: Jozsef Kadlecsik @ 2017-09-11 19:52 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
Hi Pablo,
Here follows a few ipset patches for the nf-next tree:
* Merge assignment and simplify return in a fuction by Simran Singhal
* Fix a sparse warning from me
* Deduplicate prefixlen maps by Aaron Conole
* Fix the outdated element counter for sets with timeout by Vishwanath Pai
Please consider applying them.
Best regards,
Jozsef
The following changes since commit 80cee03bf1d626db0278271b505d7f5febb37bba:
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 (2017-09-06 15:17:17 -0700)
are available in the git repository at:
git://blackhole.kfki.hu/nf-next 5c8d7e721c8a1b478bb5f0c9602560e56f466cbe
for you to fetch changes up to 5c8d7e721c8a1b478bb5f0c9602560e56f466cbe:
netfilter: ipset: ipset list may return wrong member count for set with timeout (2017-09-11 21:38:49 +0200)
----------------------------------------------------------------
Aaron Conole (1):
netfilter: ipset: deduplicate prefixlen maps
Jozsef Kadlecsik (1):
netfilter: ipset: Fix sparse warnings
Vishwanath Pai (1):
netfilter: ipset: ipset list may return wrong member count for set with timeout
simran singhal (1):
netfilter: ipset: Compress return logic
net/netfilter/ipset/ip_set_hash_gen.h | 14 +-
net/netfilter/ipset/ip_set_hash_ipportnet.c | 2 +-
net/netfilter/ipset/ip_set_list_set.c | 5 +-
net/netfilter/ipset/pfxlen.c | 395 ++++++++++------------------
4 files changed, 152 insertions(+), 264 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] ipset patches for nf-next
2017-09-11 19:52 Jozsef Kadlecsik
@ 2017-09-18 12:30 ` Pablo Neira Ayuso
2017-09-18 18:31 ` Jozsef Kadlecsik
0 siblings, 1 reply; 11+ messages in thread
From: Pablo Neira Ayuso @ 2017-09-18 12:30 UTC (permalink / raw)
To: Jozsef Kadlecsik; +Cc: netfilter-devel
Hi Jozsef,
On Mon, Sep 11, 2017 at 09:52:36PM +0200, Jozsef Kadlecsik wrote:
> Hi Pablo,
>
> Here follows a few ipset patches for the nf-next tree:
>
> * Merge assignment and simplify return in a fuction by Simran Singhal
> * Fix a sparse warning from me
> * Deduplicate prefixlen maps by Aaron Conole
> * Fix the outdated element counter for sets with timeout by Vishwanath Pai
Let me take 4/4 to nf.git as a fix, so we don't wait for one month for
this to show up.
I will take from 1/4 to 3/4 to nf-next. You can either send me a new
pull request for this or I can just include your Signed-off-by: tag in
those patches when applying them.
Thanks!
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] ipset patches for nf-next
2017-09-18 12:30 ` Pablo Neira Ayuso
@ 2017-09-18 18:31 ` Jozsef Kadlecsik
0 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2017-09-18 18:31 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netfilter-devel
Hi Pablo,
On Mon, 18 Sep 2017, Pablo Neira Ayuso wrote:
> On Mon, Sep 11, 2017 at 09:52:36PM +0200, Jozsef Kadlecsik wrote:
> > Hi Pablo,
> >
> > Here follows a few ipset patches for the nf-next tree:
> >
> > * Merge assignment and simplify return in a fuction by Simran Singhal
> > * Fix a sparse warning from me
> > * Deduplicate prefixlen maps by Aaron Conole
> > * Fix the outdated element counter for sets with timeout by Vishwanath Pai
>
> Let me take 4/4 to nf.git as a fix, so we don't wait for one month for
> this to show up.
>
> I will take from 1/4 to 3/4 to nf-next. You can either send me a new
> pull request for this or I can just include your Signed-off-by: tag in
> those patches when applying them.
Please just include my tag
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Thanks!
Best regards,
Jozsef
-
E-mail : kadlec@blackhole.kfki.hu, kadlecsik.jozsef@wigner.mta.hu
PGP key : http://www.kfki.hu/~kadlec/pgp_public_key.txt
Address : Wigner Research Centre for Physics, Hungarian Academy of Sciences
H-1525 Budapest 114, POB. 49, Hungary
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 0/4] ipset patches for nf-next
@ 2020-10-29 15:39 Jozsef Kadlecsik
0 siblings, 0 replies; 11+ messages in thread
From: Jozsef Kadlecsik @ 2020-10-29 15:39 UTC (permalink / raw)
To: netfilter-devel; +Cc: Pablo Neira Ayuso
Hi Pablo,
Please consider to apply the next patches in the nf-next tree:
- Update byte and packet counters regardless of whether they match patch
from Stefano Brivio. Finally I accepted Stefano's reasoning about updating
the counters always.
- Add supporting the -exist flag with the destroy command too. The -exist
flag was supported with add/del and create only but not with destroy.
Now it is possible to write restore "scripts" which contains destroy and
it won't abort when the set to be destroyed does not exist.
- Add the bucketsize parameter to all hash types, which makes possible to limit
the max bucket size in the hash. Thus one can tune for faster matching with
the price of higher memory footprint.
- Expose the initval hash parameter to userspace: after saving the set, one
can now restore exactly the same set content and structure.
Best regards,
Jozsef
The following changes since commit 3cb12d27ff655e57e8efe3486dca2a22f4e30578:
Merge tag 'net-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net (2020-10-23 12:05:49 -0700)
are available in the Git repository at:
git://blackhole.kfki.hu/nf-next 17eca1ad71619af37e
for you to fetch changes up to 17eca1ad71619af37e136606fb87f7fc8a6fe8b5:
netfilter: ipset: Expose the initval hash parameter to userspace (2020-10-29 15:50:55 +0100)
----------------------------------------------------------------
Jozsef Kadlecsik (3):
netfilter: ipset: Support the -exist flag with the destroy command
netfilter: ipset: Add bucketsize parameter to all hash types
netfilter: ipset: Expose the initval hash parameter to userspace
Stefano Brivio (1):
netfilter: ipset: Update byte and packet counters regardless of whether they match
include/linux/netfilter/ipset/ip_set.h | 5 ++++
include/uapi/linux/netfilter/ipset/ip_set.h | 6 ++--
net/netfilter/ipset/ip_set_core.c | 9 ++++--
net/netfilter/ipset/ip_set_hash_gen.h | 45 ++++++++++++++++++----------
net/netfilter/ipset/ip_set_hash_ip.c | 7 +++--
net/netfilter/ipset/ip_set_hash_ipmac.c | 6 ++--
net/netfilter/ipset/ip_set_hash_ipmark.c | 7 +++--
net/netfilter/ipset/ip_set_hash_ipport.c | 7 +++--
net/netfilter/ipset/ip_set_hash_ipportip.c | 7 +++--
net/netfilter/ipset/ip_set_hash_ipportnet.c | 7 +++--
net/netfilter/ipset/ip_set_hash_mac.c | 6 ++--
net/netfilter/ipset/ip_set_hash_net.c | 7 +++--
net/netfilter/ipset/ip_set_hash_netiface.c | 7 +++--
net/netfilter/ipset/ip_set_hash_netnet.c | 7 +++--
net/netfilter/ipset/ip_set_hash_netport.c | 7 +++--
net/netfilter/ipset/ip_set_hash_netportnet.c | 7 +++--
16 files changed, 103 insertions(+), 44 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-10-29 15:46 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-24 17:49 [PATCH 0/4] ipset patches for nf-next Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 1/4] netfilter: ipset: Removed invalid IPSET_ATTR_MARKMASK validation Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 2/4] netfilter: ipset: netnet,netportnet: Fix value range support for IPv4 Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 3/4] netfilter: ipset: Resolve missing-field-initializer warnings Jozsef Kadlecsik
2014-08-24 17:49 ` [PATCH 4/4] netfilter: ipset: Fix warn: integer overflows 'sizeof(*map) + size * set->dsize' Jozsef Kadlecsik
2014-08-25 8:28 ` [PATCH 0/4] ipset patches for nf-next Pablo Neira Ayuso
-- strict thread matches above, loose matches on Subject: below --
2020-10-29 15:39 Jozsef Kadlecsik
2017-09-11 19:52 Jozsef Kadlecsik
2017-09-18 12:30 ` Pablo Neira Ayuso
2017-09-18 18:31 ` Jozsef Kadlecsik
2012-09-21 20:49 Jozsef Kadlecsik
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).