netfilter: xt_recent: avoid high order page allocations
authorEric Dumazet <edumazet@google.com>
Thu, 3 Jan 2013 22:18:39 +0000 (22:18 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Feb 2013 00:27:08 +0000 (18:27 -0600)
commit99740d8bf1a78bcfd85072d2396847488a565b68
treef460034a3570415abc78e9be50bc3664d660e5bc
parent98dbbfa183f5abbbe582c1ba53b8bfac9e7ed37e
netfilter: xt_recent: avoid high order page allocations

commit 2727de76041b2064c0b74f00a2a89678fb3efafc upstream.

xt_recent can try high order page allocations and this can fail.

iptables: page allocation failure: order:9, mode:0xc0d0

It also wastes about half the allocated space because of kmalloc()
power-of-two roundups and struct recent_table layout.

Use vmalloc() instead to save space and be less prone to allocation
errors when memory is fragmented.

Reported-by: Miroslav Kratochvil <exa.exa@gmail.com>
Reported-by: Dave Jones <davej@redhat.com>
Reported-by: Harald Reindl <h.reindl@thelounge.net>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/netfilter/xt_recent.c