From: Li RongQing idr_preload() is called in a sleepable context before acquiring a spinlock. Change the allocation flag from GFP_ATOMIC to GFP_KERNEL to allow direct reclaim and improve allocation success rate under memory pressure. Signed-off-by: Li RongQing --- drivers/net/ethernet/netronome/nfp/flower/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.c b/drivers/net/ethernet/netronome/nfp/flower/main.c index 83eaa5a..8f232c6 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.c +++ b/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -63,7 +63,7 @@ nfp_flower_get_internal_port_id(struct nfp_app *app, struct net_device *netdev) if (id > 0) return id; - idr_preload(GFP_ATOMIC); + idr_preload(GFP_KERNEL); spin_lock_bh(&priv->internal_ports.lock); id = idr_alloc(&priv->internal_ports.port_ids, netdev, NFP_MIN_INT_PORT_ID, NFP_MAX_INT_PORT_ID, GFP_ATOMIC); -- 2.9.4