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>
This commit is contained in:
committed by
David S. Miller
parent
d0a24a3516
commit
31fe62b958
@@ -1647,6 +1647,7 @@ void __init inode_init_early(void)
|
||||
HASH_EARLY,
|
||||
&i_hash_shift,
|
||||
&i_hash_mask,
|
||||
0,
|
||||
0);
|
||||
|
||||
for (loop = 0; loop < (1U << i_hash_shift); loop++)
|
||||
@@ -1677,6 +1678,7 @@ void __init inode_init(void)
|
||||
0,
|
||||
&i_hash_shift,
|
||||
&i_hash_mask,
|
||||
0,
|
||||
0);
|
||||
|
||||
for (loop = 0; loop < (1U << i_hash_shift); loop++)
|
||||
|
Reference in New Issue
Block a user