rhashtable: Drop gfp_flags arg in insert/remove functions
Reallocation is only required for shrinking and expanding and both rely on a mutex for synchronization and callers of rhashtable_init() are in non atomic context. Therefore, no reason to continue passing allocation hints through the API. Instead, use GFP_KERNEL and add __GFP_NOWARN | __GFP_NORETRY to allow for silent fall back to vzalloc() without the OOM killer jumping in as pointed out by Eric Dumazet and Eric W. Biederman. Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
64bb7e9949
commit
6eba82248e
@@ -1092,7 +1092,7 @@ static int netlink_insert(struct sock *sk, struct net *net, u32 portid)
|
||||
|
||||
nlk_sk(sk)->portid = portid;
|
||||
sock_hold(sk);
|
||||
rhashtable_insert(&table->hash, &nlk_sk(sk)->node, GFP_KERNEL);
|
||||
rhashtable_insert(&table->hash, &nlk_sk(sk)->node);
|
||||
err = 0;
|
||||
err:
|
||||
mutex_unlock(&nl_sk_hash_lock);
|
||||
@@ -1105,7 +1105,7 @@ static void netlink_remove(struct sock *sk)
|
||||
|
||||
mutex_lock(&nl_sk_hash_lock);
|
||||
table = &nl_table[sk->sk_protocol];
|
||||
if (rhashtable_remove(&table->hash, &nlk_sk(sk)->node, GFP_KERNEL)) {
|
||||
if (rhashtable_remove(&table->hash, &nlk_sk(sk)->node)) {
|
||||
WARN_ON(atomic_read(&sk->sk_refcnt) == 1);
|
||||
__sock_put(sk);
|
||||
}
|
||||
|
Reference in New Issue
Block a user