mm: add a low limit to alloc_large_system_hash
authorTim Bird <tim.bird@am.sony.com>
Wed, 23 May 2012 13:33:35 +0000 (13:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 24 May 2012 04:28:21 +0000 (00:28 -0400)
commit31fe62b9586643953f0c0c37a6357dafc69034e2
tree69f9990423969df4ecbaea9d1e8de748284bea5e
parentd0a24a3516fb36023bef28d2355fa34e7f32029f
mm: add a low limit to alloc_large_system_hash

UDP stack needs a minimum hash size value for proper operation and also
uses alloc_large_system_hash() for proper NUMA distribution of its hash
tables and automatic sizing depending on available system memory.

On some low memory situations, udp_table_init() must ignore the
alloc_large_system_hash() result and reallocs a bigger memory area.

As we cannot easily free old hash table, we leak it and kmemleak can
issue a warning.

This patch adds a low limit parameter to alloc_large_system_hash() to
solve this problem.

We then specify UDP_HTABLE_SIZE_MIN for UDP/UDPLite hash table
allocation.

Reported-by: Mark Asselstine <mark.asselstine@windriver.com>
Reported-by: Tim Bird <tim.bird@am.sony.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
fs/dcache.c
fs/inode.c
include/linux/bootmem.h
kernel/pid.c
mm/page_alloc.c
net/ipv4/route.c
net/ipv4/tcp.c
net/ipv4/udp.c