]> granicus.if.org Git - ipset/log
ipset
7 years agoUpdate manpage about the size parameter of list:set types.
Jozsef Kadlecsik [Sun, 19 Feb 2017 17:51:29 +0000 (18:51 +0100)]
Update manpage about the size parameter of list:set types.

The parameter is ignored since ipset version 6.24.

7 years agonetfilter: ipset: Null pointer exception in ipset list:set
Vishwanath Pai [Thu, 16 Feb 2017 19:55:45 +0000 (20:55 +0100)]
netfilter: ipset: Null pointer exception in ipset list:set

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>
7 years agoNew test to verify that only the intended entries are deleted at hash types.
Jozsef Kadlecsik [Thu, 16 Feb 2017 19:52:04 +0000 (20:52 +0100)]
New test to verify that only the intended entries are deleted at hash types.

7 years agoFix bug: sometimes valid entries in hash:* types of sets were evicted
Jozsef Kadlecsik [Thu, 16 Feb 2017 19:47:30 +0000 (20:47 +0100)]
Fix bug: sometimes valid entries in hash:* types of sets were evicted

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

7 years agoCorrect copyright owner
Jozsef Kadlecsik [Thu, 10 Nov 2016 10:51:37 +0000 (11:51 +0100)]
Correct copyright owner

The functions was not introduced by Sergey Popovich, he proposed
only separating them into individual extension header files.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
7 years agoRevert patch "Correct rcu_dereference_bh_nfnl() usage"
Jozsef Kadlecsik [Thu, 10 Nov 2016 10:11:32 +0000 (11:11 +0100)]
Revert patch "Correct rcu_dereference_bh_nfnl() usage"

The susbsystem param cannot be used to rely on subsystem mutex locking
because the call is used in netlink dump context as well.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoipset 6.30 released v6.30
Jozsef Kadlecsik [Mon, 17 Oct 2016 11:50:14 +0000 (13:50 +0200)]
ipset 6.30 released

8 years agoipset: Drop extra comma from error message
Neutron Soutmun [Mon, 17 Oct 2016 04:51:06 +0000 (11:51 +0700)]
ipset: Drop extra comma from error message

* The "by userspace." should be concat with the error message instead.

Signed-off-by: Neutron Soutmun <neo.neutron@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoipset: Fix the incorrect dynamic/static modules list
Neutron Soutmun [Mon, 17 Oct 2016 04:48:33 +0000 (11:48 +0700)]
ipset: Fix the incorrect dynamic/static modules list

* The module's name should not be partial matched.

  SETTYPE_MODLIST="ipset_hash_ipmac"
  It shoud not be matched with "ipset_hash_ip".

Signed-off-by: Neutron Soutmun <neo.neutron@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: ipset: hash: fix boolreturn.cocci warnings
kbuild test robot [Sat, 15 Oct 2016 01:13:14 +0000 (09:13 +0800)]
netfilter: ipset: hash: fix boolreturn.cocci warnings

net/netfilter/ipset/ip_set_hash_ipmac.c:70:8-9: WARNING: return of 0/1 in function 'hash_ipmac4_data_list' with return type bool
net/netfilter/ipset/ip_set_hash_ipmac.c:178:8-9: WARNING: return of 0/1 in function 'hash_ipmac6_data_list' with return type bool

 Return statements in functions returning bool should use
 true/false instead of 1/0.
Generated by: scripts/coccinelle/misc/boolreturn.cocci

CC: Tomasz Chilinski <tomasz.chilinski@chilan.com>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoCorrect tests to check the number of entries too
Jozsef Kadlecsik [Fri, 14 Oct 2016 21:38:30 +0000 (23:38 +0200)]
Correct tests to check the number of entries too

Give enough time for the entries to timeout before listing, so that
we get the correct number of entries.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix the nla_put_net64() API changes backport
Jozsef Kadlecsik [Fri, 14 Oct 2016 21:36:46 +0000 (23:36 +0200)]
Fix the nla_put_net64() API changes backport

We must call nla_put_net64() because ipset uses net order in the netlink
communication.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: ipset: Fixing unnamed union init
Elad Raz [Thu, 13 Oct 2016 18:52:54 +0000 (20:52 +0200)]
netfilter: ipset: Fixing unnamed union init

In continue to proposed Vinson Lee's post [1], this patch fixes compilation
issues founded at gcc 4.4.7. The initialization of .cidr field of unnamed
unions causes compilation error in gcc 4.4.x.

References

Visible links
[1] https://lkml.org/lkml/2015/7/5/74

Signed-off-by: Elad Raz <eladr@mellanox.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: x_tables: Use par->net instead of computing from the passed net devices
Eric W. Biederman [Thu, 13 Oct 2016 18:40:39 +0000 (20:40 +0200)]
netfilter: x_tables: Use par->net instead of computing from the passed net devices

Backported from kernel tree.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoCorrect the reported memory size for bitmap:* types
Jozsef Kadlecsik [Thu, 13 Oct 2016 17:38:53 +0000 (19:38 +0200)]
Correct the reported memory size for bitmap:* types

The patch "Fix extension alignmen" (c7cf6f3b) removed counting
the non-dynamic extensions into the used up memory area, fixed.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix coding styles reported by checkpatch.pl, already in kernel
Jozsef Kadlecsik [Tue, 11 Oct 2016 20:37:18 +0000 (22:37 +0200)]
Fix coding styles reported by checkpatch.pl, already in kernel

8 years agonetfilter: x_tables: Pass struct net in xt_action_param
Eric W. Biederman [Tue, 11 Oct 2016 20:19:51 +0000 (22:19 +0200)]
netfilter: x_tables: Pass struct net in xt_action_param

As xt_action_param lives on the stack this does not bloat any
persistent data structures.

This is a first step in making netfilter code that needs to know
which network namespace it is executing in simpler.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
8 years agonet: sched: fix skb->protocol use in case of accelerated vlan path
Jiri Pirko [Tue, 11 Oct 2016 20:09:08 +0000 (22:09 +0200)]
net: sched: fix skb->protocol use in case of accelerated vlan path

tc code implicitly considers skb->protocol even in case of accelerated
vlan paths and expects vlan protocol type here. However, on rx path,
if the vlan header was already stripped, skb->protocol contains value
of next header. Similar situation is on tx path.

So for skbs that use skb->vlan_tci for tagging, use skb->vlan_proto instead.

Reported-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
8 years agoCheck IPSET_ATTR_ETHER netlink attribute length in hash:ipmac too
Jozsef Kadlecsik [Tue, 11 Oct 2016 06:02:14 +0000 (08:02 +0200)]
Check IPSET_ATTR_ETHER netlink attribute length in hash:ipmac too

The explicit length checking was missing, added.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: fix include files for compilation
Mikko Rapeli [Tue, 11 Oct 2016 06:00:03 +0000 (08:00 +0200)]
netfilter: fix include files for compilation

Add missing header dependencies and other small changes so that each file
compiles alone in userspace.

Signed-off-by: Mikko Rapeli <mikko.rapeli@iki.fi>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoipset: Backports for the nla_put_net64() API changes
Neutron Soutmun [Thu, 23 Jun 2016 10:22:11 +0000 (17:22 +0700)]
ipset: Backports for the nla_put_net64() API changes

* Backports the patch "libnl: nla_put_net64():align on a 64-bit area" [1]
  by Nicolas Dichtel <nicolas.dichtel@6wind.com>

* Since the nla_put_net64() API has been changed, therefore, the
  ip_set_compat.h.in should provides the macro IPSET_NLA_PUT_NET64 that
  point to the nla_put_net64() with appropriate number of arguments.

  The build script should distinguish the API changes by detect for
  the existence of nla_put_64bit() function in include/net/netlink.h.
  This function was added in the same patches set and called by
  the nla_put_be64() that called by nla_put_net64() respectively.

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit?id=e9bbe898cbe89b17ad3993c136aa13d0431cd537

Signed-off-by: Neutron Soutmun <neo.neutron@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: ipset: use setup_timer() and mod_timer().
Muhammad Falak R Wani [Fri, 13 May 2016 20:58:54 +0000 (02:28 +0530)]
netfilter: ipset: use setup_timer() and mod_timer().

Use setup_timer() and instead of init_timer(), being the preferred way
of setting up a timer.

Also, quoting the mod_timer() function comment:
-> mod_timer() is a more efficient way to update the expire field of an
   active timer (if the timer is inactive it will be activated).

Use setup_timer() and mod_timer() to setup and arm a timer, making the
code compact and easier to read.

Signed-off-by: Muhammad Falak R Wani <falakreyaz@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: ipset: use setup_timer() and mod_timer().
Muhammad Falak R Wani [Fri, 13 May 2016 20:58:53 +0000 (02:28 +0530)]
netfilter: ipset: use setup_timer() and mod_timer().

Use setup_timer() and instead of init_timer(), being the preferred way
of setting up a timer.

Also, quoting the mod_timer() function comment:
-> mod_timer() is a more efficient way to update the expire field of an
   active timer (if the timer is inactive it will be activated).

Use setup_timer() and mod_timer() to setup and arm a timer, making the
code compact and easier to read.

Signed-off-by: Muhammad Falak R Wani <falakreyaz@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agonetfilter: ipset: use setup_timer() and mod_timer().
Muhammad Falak R Wani [Fri, 13 May 2016 20:58:52 +0000 (02:28 +0530)]
netfilter: ipset: use setup_timer() and mod_timer().

Use setup_timer() and instead of init_timer(), being the preferred way
of setting up a timer.

Also, quoting the mod_timer() function comment:
-> mod_timer() is a more efficient way to update the expire field of an
   active timer (if the timer is inactive it will be activated).

Use setup_timer() and mod_timer() to setup and arm a timer, making the
code compact and easier to read.

Signed-off-by: Muhammad Falak R Wani <falakreyaz@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agohash:ipmac type support added to ipset, userspace part
Tomasz Chilinski [Thu, 5 May 2016 05:32:19 +0000 (07:32 +0200)]
hash:ipmac type support added to ipset, userspace part

Signed-off-by: Tomasz Chili??ski <tomasz.chilinski@chilan.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agohash:ipmac type support added to ipset
Tomasz Chilinski [Thu, 5 May 2016 05:21:26 +0000 (07:21 +0200)]
hash:ipmac type support added to ipset

Signed-off-by: Tomasz Chili??ski <tomasz.chilinski@chilan.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoipset 6.29 released v6.29
Jozsef Kadlecsik [Wed, 16 Mar 2016 08:07:18 +0000 (09:07 +0100)]
ipset 6.29 released

8 years agonetfilter: ipset: fix race condition in ipset save, swap and delete
Vishwanath Pai [Wed, 16 Mar 2016 08:03:30 +0000 (09:03 +0100)]
netfilter: ipset: fix race condition in ipset save, swap and delete

This fix adds a new reference counter (ref_netlink) for the struct ip_set.
The other reference counter (ref) can be swapped out by ip_set_swap and we
need a separate counter to keep track of references for netlink events
like dump. Using the same ref counter for dump causes a race condition
which can be demonstrated by the following script:

ipset create hash_ip1 hash:ip family inet hashsize 1024 maxelem 500000 \
counters
ipset create hash_ip2 hash:ip family inet hashsize 300000 maxelem 500000 \
counters
ipset create hash_ip3 hash:ip family inet hashsize 1024 maxelem 500000 \
counters

ipset save &

ipset swap hash_ip3 hash_ip2
ipset destroy hash_ip3 /* will crash the machine */

Swap will exchange the values of ref so destroy will see ref = 0 instead of
ref = 1. With this fix in place swap will not succeed because ipset save
still has ref_netlink on the set (ip_set_swap doesn't swap ref_netlink).

Both delete and swap will error out if ref_netlink != 0 on the set.

Note: The changes to *_head functions is because previously we would
increment ref whenever we called these functions, we don't do that
anymore.

Reviewed-by: Joshua Hunt <johunt@akamai.com>
Signed-off-by: Vishwanath Pai <vpai@akamai.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoSuppress unnecessary stderr in command loop for resize and list
Jozsef Kadlecsik [Wed, 16 Mar 2016 08:01:56 +0000 (09:01 +0100)]
Suppress unnecessary stderr in command loop for resize and list

8 years agoCorrection in comment test
Jozsef Kadlecsik [Wed, 16 Mar 2016 08:01:42 +0000 (09:01 +0100)]
Correction in comment test

8 years agoSupport chroot buildroots
Jozsef Kadlecsik [Sun, 13 Mar 2016 14:18:58 +0000 (15:18 +0100)]
Support chroot buildroots

The calling of modinfo at `make modules_install` did not take into
account chroot buildroots (reported by Jan Engelhardt).

8 years agoFix "configure" breakage due to pkg-config related changes
Jozsef Kadlecsik [Sun, 13 Mar 2016 11:10:47 +0000 (12:10 +0100)]
Fix "configure" breakage due to pkg-config related changes

The support for older pkg-config packages broke the "configure" script
(reported by Jan Engelhardt).

8 years agoipset 6.28 released v6.28
Jozsef Kadlecsik [Sat, 12 Mar 2016 21:01:00 +0000 (22:01 +0100)]
ipset 6.28 released

8 years agonetfilter: ipset: Check IPSET_ATTR_ETHER netlink attribute length
Jozsef Kadlecsik [Tue, 8 Mar 2016 19:29:10 +0000 (20:29 +0100)]
netfilter: ipset: Check IPSET_ATTR_ETHER netlink attribute length

Julia Lawall pointed out that IPSET_ATTR_ETHER netlink attribute length
was not checked explicitly, just for the maximum possible size. Malicious
netlink clients could send shorter attribute and thus resulting a kernel
read after the buffer.

The patch adds the explicit length checkings.

Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix __aligned_u64 compatibility support for older kernel releases
Jozsef Kadlecsik [Mon, 29 Feb 2016 12:04:53 +0000 (13:04 +0100)]
Fix __aligned_u64 compatibility support for older kernel releases

The issue was reported by Mart Frauenlob.

8 years agoSupport older pkg-config packages
Jozsef Kadlecsik [Mon, 29 Feb 2016 12:02:08 +0000 (13:02 +0100)]
Support older pkg-config packages

Resolve the pkg-config 0.28 or greater dependency introduced by
the patch "Add bash completion to the install routine."

8 years agoAdd bash completion to the install routine.
Mart Frauenlob [Thu, 25 Feb 2016 15:01:40 +0000 (16:01 +0100)]
Add bash completion to the install routine.

Add the configure option --enable-bashcompl (default disabled).
The PKG_CHECK_VAR requires pkg-config 0.28 or greater.

Signed-off-by: Mart Frauenlob <mart.frauenlob@chello.at>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoAdd compatibility to support EXPORT_SYMBOL_GPL in module.h
Jozsef Kadlecsik [Wed, 24 Feb 2016 21:07:40 +0000 (22:07 +0100)]
Add compatibility to support EXPORT_SYMBOL_GPL in module.h

Fixes netfilter bugzilla id #1008

8 years agoFix misleading error message with comment extension
Jozsef Kadlecsik [Wed, 24 Feb 2016 20:10:19 +0000 (21:10 +0100)]
Fix misleading error message with comment extension

Error message was totally misleading when comment
extension was used when the set was defined without
the extension. Reported by Drunkard Zhang.

8 years agoFix set:list type crash when flush/dump set in parallel
Jozsef Kadlecsik [Wed, 24 Feb 2016 19:22:51 +0000 (20:22 +0100)]
Fix set:list type crash when flush/dump set in parallel

Flushing/listing entries was not RCU safe, so parallel flush/dump
could lead to kernel crash. Bug reported by Deniz Eren.

Fixes netfilter bugzilla id #1050.

8 years agonetfilter: nfnetlink: pass down netns pointer to call() and call_rcu()
Jozsef Kadlecsik [Tue, 16 Feb 2016 06:50:22 +0000 (07:50 +0100)]
netfilter: nfnetlink: pass down netns pointer to call() and call_rcu()

Backport patch from Pablo Neira Ayuso <pablo@netfilter.org>

8 years agoTest added to check 0.0.0.0/0,iface to be matched in hash:net,iface type
Jozsef Kadlecsik [Wed, 13 Jan 2016 08:28:07 +0000 (09:28 +0100)]
Test added to check 0.0.0.0/0,iface to be matched in hash:net,iface type

8 years agonetfilter: ipset: allow a 0 netmask with hash_netiface type
Florian Westphal [Tue, 12 Jan 2016 16:07:05 +0000 (17:07 +0100)]
netfilter: ipset: allow a 0 netmask with hash_netiface type

Jozsef says:
 The correct behaviour is that if we have
 ipset create test1 hash:net,iface
 ipset add test1 0.0.0.0/0,eth0
 iptables -A INPUT -m set --match-set test1 src,src

 then the rule should match for any traffic coming in through eth0.

This removes the -EINVAL runtime test to make matching work
in case packet arrived via the specified interface.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1297092
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix link with libtool >= 2.4.4
Olivier Blin [Wed, 6 Jan 2016 23:21:09 +0000 (00:21 +0100)]
Fix link with libtool >= 2.4.4

As of libtool-2.4.4, -ldl is no longer prepended to LIBS.
Since types.c needs dlopen() and dlerror(), use LIBADD_DLOPEN, as
suggested in libtool-2.4.4 release notes.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoipset 6.27 released v6.27
Jozsef Kadlecsik [Sat, 7 Nov 2015 12:25:38 +0000 (13:25 +0100)]
ipset 6.27 released

8 years agoFix reported memory size for hash:* types
Jozsef Kadlecsik [Wed, 4 Nov 2015 08:44:29 +0000 (09:44 +0100)]
Fix reported memory size for hash:* types

The calculation of the full allocated memory did not take
into account the size of the base hash bucket structure at some
places.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix hash type expire: release empty hash bucket block
Jozsef Kadlecsik [Wed, 4 Nov 2015 08:48:39 +0000 (09:48 +0100)]
Fix hash type expire: release empty hash bucket block

When all entries are expired/all slots are empty, release the bucket.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix hash:* type expiration
Jozsef Kadlecsik [Wed, 4 Nov 2015 08:28:29 +0000 (09:28 +0100)]
Fix hash:* type expiration

Incorrect index was used when the data blob was shrinked at expiration,
which could lead to falsely expired entries and memory leak when
the comment extension was used too.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoCollapse same condition body to a single one
Jozsef Kadlecsik [Mon, 2 Nov 2015 19:27:58 +0000 (20:27 +0100)]
Collapse same condition body to a single one

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoFix extension alignment
Jozsef Kadlecsik [Sat, 7 Nov 2015 09:44:57 +0000 (10:44 +0100)]
Fix extension alignment

The data extensions in ipset lacked the proper memory alignment and
thus could lead to kernel crash on several architectures. Therefore
the structures have been reorganized and alignment attributes added
where needed. The patch was tested on armv7h by Gerhard Wiesinger and
on x86_64, sparc64 by Jozsef Kadlecsik.

Reported-by: Gerhard Wiesinger <lists@wiesinger.com>
Tested-by: Gerhard Wiesinger <lists@wiesinger.com>
Tested-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
8 years agoCompatibility: include linux/export.h when needed
Jozsef Kadlecsik [Wed, 28 Oct 2015 16:14:28 +0000 (17:14 +0100)]
Compatibility: include linux/export.h when needed

8 years agoHandle uint64_t alignment issue in ipset tool
Jozsef Kadlecsik [Wed, 28 Oct 2015 16:13:31 +0000 (17:13 +0100)]
Handle uint64_t alignment issue in ipset tool

8 years agoCompatibility: make sure vmalloc.h is included for kvfree()
Jozsef Kadlecsik [Mon, 26 Oct 2015 17:54:19 +0000 (18:54 +0100)]
Compatibility: make sure vmalloc.h is included for kvfree()

9 years agoFix detecting 'struct net' in 'struct tcf_ematch'
Jozsef Kadlecsik [Mon, 19 Oct 2015 18:20:19 +0000 (20:20 +0200)]
Fix detecting 'struct net' in 'struct tcf_ematch'

Nikolay Borisov reported that the detection is broken. Fix checking in the
right sctructure and wrap the call to dev_get_by_index_rcu() too.

9 years agoProtect definition of RCU_INIT_POINTER in compatibility header file
Jozsef Kadlecsik [Mon, 19 Oct 2015 17:58:35 +0000 (19:58 +0200)]
Protect definition of RCU_INIT_POINTER in compatibility header file

Nikolay Borisov reported that in 3.12.47 RCU_INIT_POINTER is redefined
in ip_set_compat.h.in due to not protecting it individually.

9 years agonetfilter: ipset: Fix sleeping memory allocation in atomic context
Nikolay Borisov [Fri, 16 Oct 2015 06:40:28 +0000 (09:40 +0300)]
netfilter: ipset: Fix sleeping memory allocation in atomic context

Commit 00590fdd5be0 introduced RCU locking in list type and in
doing so introduced a memory allocation in list_set_add, which
is done in an atomic context, due to the fact that ipset rcu
list modifications are serialised with a spin lock. The reason
why we can't use a mutex is that in addition to modifying the
list with ipset commands, it's also being modified when a
particular ipset rule timeout expires aka garbage collection.
This gc is triggered from set_cleanup_entries, which in turn
is invoked from a timer thus requiring the lock to be bh-safe.

Concretely the following call chain can lead to "sleeping function
called in atomic context" splat:
call_ad -> list_set_uadt -> list_set_uadd -> kzalloc(, GFP_KERNEL).
And since GFP_KERNEL allows initiating direct reclaim thus
potentially sleeping in the allocation path.

To fix the issue change the allocation type to GFP_ATOMIC, to
correctly reflect that it is occuring in an atomic context.

Fixes: 00590fdd5be0 ("netfilter: ipset: Introduce RCU locking in list type")
Acked-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Nikolay Borisov <kernel@kyup.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoipset 6.26 released v6.26
Jozsef Kadlecsik [Fri, 28 Aug 2015 17:01:12 +0000 (19:01 +0200)]
ipset 6.26 released

9 years agoOut of bound access in hash:net* types fixed
Jozsef Kadlecsik [Tue, 25 Aug 2015 09:11:57 +0000 (11:11 +0200)]
Out of bound access in hash:net* types fixed

Dave Jones reported that KASan detected out of bounds access in hash:net*
types:

[   23.139532] ==================================================================
[   23.146130] BUG: KASan: out of bounds access in hash_net4_add_cidr+0x1db/0x220 at addr ffff8800d4844b58
[   23.152937] Write of size 4 by task ipset/457
[   23.159742] =============================================================================
[   23.166672] BUG kmalloc-512 (Not tainted): kasan: bad access detected
[   23.173641] -----------------------------------------------------------------------------
[   23.194668] INFO: Allocated in hash_net_create+0x16a/0x470 age=7 cpu=1 pid=456
[   23.201836]  __slab_alloc.constprop.66+0x554/0x620
[   23.208994]  __kmalloc+0x2f2/0x360
[   23.216105]  hash_net_create+0x16a/0x470
[   23.223238]  ip_set_create+0x3e6/0x740
[   23.230343]  nfnetlink_rcv_msg+0x599/0x640
[   23.237454]  netlink_rcv_skb+0x14f/0x190
[   23.244533]  nfnetlink_rcv+0x3f6/0x790
[   23.251579]  netlink_unicast+0x272/0x390
[   23.258573]  netlink_sendmsg+0x5a1/0xa50
[   23.265485]  SYSC_sendto+0x1da/0x2c0
[   23.272364]  SyS_sendto+0xe/0x10
[   23.279168]  entry_SYSCALL_64_fastpath+0x12/0x6f

The bug is fixed in the patch and the testsuite is extended in ipset
to check cidr handling more thoroughly.

9 years agoWarn about loaded in ip_set modules at module installation
Jozsef Kadlecsik [Tue, 25 Aug 2015 08:48:37 +0000 (10:48 +0200)]
Warn about loaded in ip_set modules at module installation

9 years agoUse IPSET_BIN in resize-and-list.sh and suppress echoing of loop variable
Jozsef Kadlecsik [Mon, 24 Aug 2015 15:12:23 +0000 (17:12 +0200)]
Use IPSET_BIN in resize-and-list.sh and suppress echoing of loop variable

9 years agoManpage typo corrections
David Wittman [Mon, 20 Jul 2015 12:05:13 +0000 (14:05 +0200)]
Manpage typo corrections

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoFix grammar error in manpage
Neutron Soutmun [Mon, 20 Jul 2015 10:21:56 +0000 (17:21 +0700)]
Fix grammar error in manpage

Refer to: https://bugs.launchpad.net/ubuntu/+source/lintian/+bug/608231

The "allows to" is a common grammar error which it will probably be
replaced by "allows one to" as a suggestion in above bug report page.

Signed-off-by: Neutron Soutmun <neo.neutron@gmail.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoMake struct htype per ipset family
Jozsef Kadlecsik [Fri, 26 Jun 2015 13:13:18 +0000 (15:13 +0200)]
Make struct htype per ipset family

Before this patch struct htype created at the first source
of ip_set_hash_gen.h and it is common for both IPv4 and IPv6
set variants.

Make struct htype per ipset family and use NLEN to make
nets array fixed size to simplify struct htype allocation.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

9 years agoOptimize hash creation routine
Jozsef Kadlecsik [Fri, 26 Jun 2015 09:45:09 +0000 (11:45 +0200)]
Optimize hash creation routine

Exit as easly as possible on error and use RCU_INIT_POINTER()
as set is not seen at creation time.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

9 years agoMake sure element data size is a multiple of u32
Jozsef Kadlecsik [Fri, 26 Jun 2015 09:16:28 +0000 (11:16 +0200)]
Make sure element data size is a multiple of u32

Data for hashing required to be array of u32. Make sure that
element data always multiple of u32.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

9 years agoMake NLEN compile time constant for hash types
Jozsef Kadlecsik [Fri, 26 Jun 2015 09:05:54 +0000 (11:05 +0200)]
Make NLEN compile time constant for hash types

Hash types define HOST_MASK before inclusion of ip_set_hash_gen.h
and the only place where NLEN needed to be calculated at runtime
is *_create() method.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

9 years agoSimplify mtype_expire() for hash types
Jozsef Kadlecsik [Fri, 26 Jun 2015 08:14:47 +0000 (10:14 +0200)]
Simplify mtype_expire() for hash types

Remove redundant parameters nets_length and dsize:
they could be get from other parameters.

Remove one leve of intendation by using continue while
iterating over elements in bucket.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

9 years agoCount non-static extension memory into the set memory size for userspace
Jozsef Kadlecsik [Fri, 26 Jun 2015 07:40:14 +0000 (09:40 +0200)]
Count non-static extension memory into the set memory size for userspace

Non-static (i.e. comment) extension was not counted into the memory
size. A new internal counter is introduced for this. In the case of
the hash types the sizes of the arrays are counted there as well so
that we can avoid to scan the whole set when just the header data
is requested.

9 years agonet: sched: Simplify em_ipset_match
Eric W. Biederman [Thu, 25 Jun 2015 09:48:23 +0000 (11:48 +0200)]
net: sched: Simplify em_ipset_match

em->net is always set and always available, use it in preference
to dev_net(skb->dev).

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoipset 6.25.1 released v6.25.1
Jozsef Kadlecsik [Thu, 25 Jun 2015 09:19:08 +0000 (11:19 +0200)]
ipset 6.25.1 released

9 years agonet/netfilter/ipset: work around gcc-4.4.4 initializer bug
Andrew Morton [Thu, 25 Jun 2015 09:15:39 +0000 (11:15 +0200)]
net/netfilter/ipset: work around gcc-4.4.4 initializer bug

gcc-4.4.4 (at least) isn't able to handle the mixture of anonymous unions
and declaration-time intializers.  Work around this.

net/netfilter/ipset/ip_set_hash_netnet.c: In function 'hash_netnet4_uadt':
net/netfilter/ipset/ip_set_hash_netnet.c:163: error: unknown field 'cidr' specified in initializer
net/netfilter/ipset/ip_set_hash_netnet.c:163: warning: missing braces around initializer
net/netfilter/ipset/ip_set_hash_netnet.c:163: warning: (near initialization for 'e.<anonymous>.ip')
...

Fixes: ea53ac5b630e813ae ("netfilter: ipset: Add hash:net,net module to kernel.)
Cc: Oliver Smith <oliver@8.c.9.b.0.7.4.0.1.0.0.2.ip6.arpa>
Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoipset manpage: refer to iptables-extensions
Jozsef Kadlecsik [Thu, 25 Jun 2015 08:49:24 +0000 (10:49 +0200)]
ipset manpage: refer to iptables-extensions

9 years agoUpdate userspace header file from the kernel tree
Jozsef Kadlecsik [Thu, 25 Jun 2015 08:24:18 +0000 (10:24 +0200)]
Update userspace header file from the kernel tree

9 years agoHandle 'extern "C" {' in check_libmap.sh
Jozsef Kadlecsik [Thu, 25 Jun 2015 08:20:41 +0000 (10:20 +0200)]
Handle 'extern "C" {' in check_libmap.sh

9 years agoipset 6.25 released v6.25
Jozsef Kadlecsik [Thu, 25 Jun 2015 08:05:19 +0000 (10:05 +0200)]
ipset 6.25 released

9 years agoAdd element count to all set types header
Jozsef Kadlecsik [Thu, 25 Jun 2015 07:29:20 +0000 (09:29 +0200)]
Add element count to all set types header

It is better to list the set elements for all set types, thus the
header information is uniform. Element counts are therefore added
to the bitmap and list types.

9 years agoAdd element count to hash headers
Eric B Munson [Fri, 29 May 2015 15:36:25 +0000 (11:36 -0400)]
Add element count to hash headers

It would be useful for userspace to query the size of an ipset hash,
however, this data is not exposed to userspace outside of counting the
number of member entries.  This patch uses the attribute
IPSET_ATTR_ELEMENTS to indicate the size in the the header that is
exported to userspace.  This field is then printed by the userspace
tool for hashes.

Because it is only meaningful for hashes to report their size, the
output is conditional on the set type.  To do this checking the
MATCH_TYPENAME macro was moved to utils.h.

The bulk of this patch changes the expected test suite to account for
the change in output.

Signed-off-by: Eric B Munson <emunson@akamai.com>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Josh Hunt <johunt@akamai.com>
Cc: netfilter-devel@vger.kernel.org
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetlink: implement nla_put_in_addr and nla_put_in6_addr
Jiri Benc [Sat, 13 Jun 2015 19:46:47 +0000 (21:46 +0200)]
netlink: implement nla_put_in_addr and nla_put_in6_addr

IP addresses are often stored in netlink attributes. Add generic functions
to do that.

For nla_put_in_addr, it would be nicer to pass struct in_addr but this is
not used universally throughout the kernel, in way too many places __be32 is
used to store IPv4 address.

Signed-off-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Compatibility part added.

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: deinline ip_set_put_extensions()
Denys Vlasenko [Sat, 13 Jun 2015 19:34:08 +0000 (21:34 +0200)]
netfilter: ipset: deinline ip_set_put_extensions()

n x86 allyesconfig build:
The function compiles to 489 bytes of machine code.
It has 25 callsites.

    text    data       bss       dec     hex filename
82441375 22255384 20627456 125324215 7784bb7 vmlinux.before
82434909 22255384 20627456 125317749 7783275 vmlinux

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
CC: Eric W. Biederman <ebiederm@xmission.com>
CC: David S. Miller <davem@davemloft.net>
CC: Jan Engelhardt <jengelh@medozas.de>
CC: Jiri Pirko <jpirko@redhat.com>
CC: linux-kernel@vger.kernel.org
CC: netdev@vger.kernel.org
CC: netfilter-devel@vger.kernel.org
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoFix error path in mtype_resize() when new hash bucket cannot be allocated
Jozsef Kadlecsik [Sat, 13 Jun 2015 19:26:14 +0000 (21:26 +0200)]
Fix error path in mtype_resize() when new hash bucket cannot be allocated

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoThere is no need to call synchronize_rcu() after list_add_rcu()
Jozsef Kadlecsik [Sat, 13 Jun 2015 19:22:32 +0000 (21:22 +0200)]
There is no need to call synchronize_rcu() after list_add_rcu()

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoFix typo in function name get_phyoutdev_name()
Jozsef Kadlecsik [Sat, 13 Jun 2015 19:21:01 +0000 (21:21 +0200)]
Fix typo in function name get_phyoutdev_name()

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Separate memsize calculation code into dedicated functions
Jozsef Kadlecsik [Wed, 6 May 2015 05:48:20 +0000 (07:48 +0200)]
netfilter: ipset: Separate memsize calculation code into dedicated functions

Hash types already has it's memsize calculation code in separate
functions. Do the same for *bitmap* and *list* sets.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

Suggested-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Split extensions into separate files
Jozsef Kadlecsik [Wed, 6 May 2015 05:37:04 +0000 (07:37 +0200)]
netfilter: ipset: Split extensions into separate files

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

Suggested-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Improve comment extension helpers
Jozsef Kadlecsik [Wed, 6 May 2015 05:27:28 +0000 (07:27 +0200)]
netfilter: ipset: Improve comment extension helpers

Allocate memory with kmalloc() rather than kzalloc().

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

Suggested-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Improve skbinfo get/init helpers
Jozsef Kadlecsik [Tue, 5 May 2015 15:13:28 +0000 (17:13 +0200)]
netfilter: ipset: Improve skbinfo get/init helpers

Use struct ip_set_skbinfo in struct ip_set_ext instead of open
coded fields and assign structure members in get/init helpers
instead of copying members one by one.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

Suggested-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Headers file cleanup
Jozsef Kadlecsik [Tue, 5 May 2015 14:59:50 +0000 (16:59 +0200)]
netfilter: ipset: Headers file cleanup

Remove extra whitespace, group counter helper together. Mark some of
the helpers arguments as const.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

Suggested-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Correct rcu_dereference_bh_nfnl() usage
Jozsef Kadlecsik [Tue, 5 May 2015 14:48:50 +0000 (16:48 +0200)]
netfilter: ipset: Correct rcu_dereference_bh_nfnl() usage

When rcu_dereference_bh_nfnl() macro would be defined on the target
system if will accept pointer and subsystem id.

Check if rcu_dereference_bh_nfnl() is defined and make it accepting two
arguments.

Ported from a patch proposed by Sergey Popovich <popovich_sergei@mail.ua>.

Suggested-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: bridge: add helpers for fetching physin/outdev pablo
Florian Westphal [Mon, 27 Apr 2015 19:48:33 +0000 (21:48 +0200)]
netfilter: bridge: add helpers for fetching physin/outdev

right now we store this in the nf_bridge_info struct, accessible
via skb->nf_bridge.  This patch prepares removal of this pointer from skb:

Instead of using skb->nf_bridge->x, we use helpers to obtain the in/out
device (or ifindexes).

Followup patches to netfilter will then allow nf_bridge_info to be
obtained by a call into the br_netfilter core, rather than keeping a
pointer to it in sk_buff.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoWhen a single set is destroyed, make sure it can't be grabbed by dump
Jozsef Kadlecsik [Sun, 26 Apr 2015 08:48:23 +0000 (10:48 +0200)]
When a single set is destroyed, make sure it can't be grabbed by dump

9 years agoIn comment extension ip_set_comment_free() is always called in a safe path
Jozsef Kadlecsik [Sun, 26 Apr 2015 08:46:47 +0000 (10:46 +0200)]
In comment extension ip_set_comment_free() is always called in a safe path

9 years agoAdd rcu_barrier() to module removal in the bitmap types too
Jozsef Kadlecsik [Fri, 17 Apr 2015 18:42:17 +0000 (20:42 +0200)]
Add rcu_barrier() to module removal in the bitmap types too

9 years agoFix coding styles reported by the most recent checkpatch.pl.
Jozsef Kadlecsik [Fri, 17 Apr 2015 18:39:34 +0000 (20:39 +0200)]
Fix coding styles reported by the most recent checkpatch.pl.

9 years agoMake sure bitmap:ip,mac detects the proper MAC even when it's overwritten
Jozsef Kadlecsik [Sun, 29 Mar 2015 14:34:52 +0000 (16:34 +0200)]
Make sure bitmap:ip,mac detects the proper MAC even when it's overwritten

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoRCU safe comment extension handling
Jozsef Kadlecsik [Sun, 29 Mar 2015 10:13:53 +0000 (12:13 +0200)]
RCU safe comment extension handling

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoMake sure the proper is_destroyed value is checked at dumping
Jozsef Kadlecsik [Sun, 29 Mar 2015 11:32:10 +0000 (13:32 +0200)]
Make sure the proper is_destroyed value is checked at dumping

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agoFix broken commit "Check extensions attributes before getting extensions."
Jozsef Kadlecsik [Sun, 29 Mar 2015 12:58:51 +0000 (14:58 +0200)]
Fix broken commit "Check extensions attributes before getting extensions."

Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Improve preprocessor macros checks
Sergey Popovich [Fri, 23 Jan 2015 13:24:50 +0000 (15:24 +0200)]
netfilter: ipset: Improve preprocessor macros checks

Check if mandatory MTYPE, HTYPE and HOST_MASK macros
defined.

Signed-off-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Fix hashing for ipv6 sets
Sergey Popovich [Fri, 23 Jan 2015 12:58:45 +0000 (14:58 +0200)]
netfilter: ipset: Fix hashing for ipv6 sets

HKEY_DATALEN remains defined after first inclusion
of ip_set_hash_gen.h, so it is incorrectly reused
for IPv6 code.

Undefine HKEY_DATALEN in ip_set_hash_gen.h at the end.

Also remove some useless defines of HKEY_DATALEN in
ip_set_hash_{ip{,mark,port},netiface}.c as ip_set_hash_gen.h
defines it correctly for such set types anyway.

Signed-off-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
9 years agonetfilter: ipset: Fix ext_*() macros
Sergey Popovich [Tue, 20 Jan 2015 14:00:14 +0000 (16:00 +0200)]
netfilter: ipset: Fix ext_*() macros

So pointers returned by these macros could be
referenced with -> directly.

Signed-off-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Sergey Popovich <popovich_sergei@mail.ua>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>