From: Eric Dumazet Date: Fri, 13 Jan 2017 17:11:22 +0000 (-0800) Subject: netlink: do not enter direct reclaim from netlink_trim() X-Git-Tag: v4.14-rc1~1463^2~414 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e89df813174d81abee8be8cabc047d69ef78c26d;p=platform%2Fkernel%2Flinux-rpi3.git netlink: do not enter direct reclaim from netlink_trim() In commit d35c99ff77ecb ("netlink: do not enter direct reclaim from netlink_dump()") we made sure to not trigger expensive memory reclaim. Problem is that a bit later, netlink_trim() might be called and trigger memory reclaim. netlink_trim() should be best effort, and really as fast as possible. Under memory pressure, it is fine to not trim this skb. Signed-off-by: Eric Dumazet Acked-by: Alexei Starovoitov Signed-off-by: David S. Miller --- diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 161b628..edcc1e1 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1210,7 +1210,9 @@ static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation) skb = nskb; } - if (!pskb_expand_head(skb, 0, -delta, allocation)) + if (!pskb_expand_head(skb, 0, -delta, + (allocation & ~__GFP_DIRECT_RECLAIM) | + __GFP_NOWARN | __GFP_NORETRY)) skb->truesize -= delta; return skb;