linux/net/netfilter/ipset
Andrey Ryabinin ed956f3947 netfilter: ipset: fix ip_set_list allocation failure
ip_set_create() and ip_set_net_init() attempt to allocate physically
contiguous memory for ip_set_list. If memory is fragmented, the
allocations could easily fail:

        vzctl: page allocation failure: order:7, mode:0xc0d0

        Call Trace:
         dump_stack+0x19/0x1b
         warn_alloc_failed+0x110/0x180
         __alloc_pages_nodemask+0x7bf/0xc60
         alloc_pages_current+0x98/0x110
         kmalloc_order+0x18/0x40
         kmalloc_order_trace+0x26/0xa0
         __kmalloc+0x279/0x290
         ip_set_net_init+0x4b/0x90 [ip_set]
         ops_init+0x3b/0xb0
         setup_net+0xbb/0x170
         copy_net_ns+0xf1/0x1c0
         create_new_namespaces+0xf9/0x180
         copy_namespaces+0x8e/0xd0
         copy_process+0xb61/0x1a00
         do_fork+0x91/0x320

Use kvcalloc() to fallback to 0-order allocations if high order
page isn't available.

Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2018-11-01 00:29:46 +01:00
..
ip_set_bitmap_gen.h netfilter: ipset: Fix "don't update counters" mode when counters used at the matching 2018-01-08 18:11:12 +01:00
ip_set_bitmap_ip.c netfilter: ipset: use swap macro instead of _manually_ swapping values 2018-01-08 18:11:11 +01:00
ip_set_bitmap_ipmac.c netfilter: ipset: use swap macro instead of _manually_ swapping values 2018-01-08 18:11:11 +01:00
ip_set_bitmap_port.c netfilter: ipset: use swap macro instead of _manually_ swapping values 2018-01-08 18:11:11 +01:00
ip_set_core.c netfilter: ipset: fix ip_set_list allocation failure 2018-11-01 00:29:46 +01:00
ip_set_getport.c sctp: remove the typedef sctp_sctphdr_t 2017-07-01 09:08:41 -07:00
ip_set_hash_gen.h netfilter: Replace spin_is_locked() with lockdep 2018-10-16 10:01:47 +02:00
ip_set_hash_ip.c netfilter: ipset: Fix adding an IPv4 range containing more than 2^31 addresses 2017-09-26 20:15:04 +02:00
ip_set_hash_ipmac.c netfilter: ipset: hash: fix boolreturn.cocci warnings 2016-11-10 13:28:50 +01:00
ip_set_hash_ipmark.c netfilter: ipset: Fix adding an IPv4 range containing more than 2^31 addresses 2017-09-26 20:15:04 +02:00
ip_set_hash_ipport.c netfilter: ipset: Fix adding an IPv4 range containing more than 2^31 addresses 2017-09-26 20:15:04 +02:00
ip_set_hash_ipportip.c netfilter: ipset: Fix adding an IPv4 range containing more than 2^31 addresses 2017-09-26 20:15:04 +02:00
ip_set_hash_ipportnet.c netfilter: ipset: Fix wraparound in hash:*net* types 2018-01-31 14:52:09 +01:00
ip_set_hash_mac.c netfilter: ipset: Use is_zero_ether_addr instead of static and memcmp 2018-03-30 12:20:44 +02:00
ip_set_hash_net.c netfilter: ipset: Fix wraparound in hash:*net* types 2018-01-31 14:52:09 +01:00
ip_set_hash_netiface.c netfilter: ipset: Fix wraparound in hash:*net* types 2018-01-31 14:52:09 +01:00
ip_set_hash_netnet.c netfilter: ipset: Fix wraparound in hash:*net* types 2018-01-31 14:52:09 +01:00
ip_set_hash_netport.c netfilter: ipset: Fix wraparound in hash:*net* types 2018-01-31 14:52:09 +01:00
ip_set_hash_netportnet.c netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net 2018-11-01 00:29:43 +01:00
ip_set_list_set.c netfilter: ipset: list:set: Decrease refcount synchronously on deletion and replace 2018-11-01 00:29:36 +01:00
Kconfig netfilter: ipset: hash:ipmac type support added to ipset 2016-11-10 13:28:49 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pfxlen.c netfilter: ipset: deduplicate prefixlen maps 2017-10-04 16:19:06 +02:00