+34
−41
Loading
Currently, instance_create() uses GFP_ATOMIC because it's called while holding instances_lock spinlock. This makes allocation more likely to fail under memory pressure. Refactor nfqnl_recv_config() to drop RCU lock after instance_lookup() and peer_portid verification. A socket cannot simultaneously send a message and close, so the queue owned by the sending socket cannot be destroyed while processing its CONFIG message. This allows instance_create() to allocate with GFP_KERNEL_ACCOUNT before taking the spinlock. Suggested-by:Florian Westphal <fw@strlen.de> Signed-off-by:
Scott Mitchell <scott.k.mitch1@gmail.com> Signed-off-by:
Florian Westphal <fw@strlen.de>