]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
netlink: do not enter direct reclaim from netlink_trim()
authorEric Dumazet <edumazet@google.com>
Fri, 13 Jan 2017 17:11:22 +0000 (09:11 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Jan 2017 18:39:35 +0000 (13:39 -0500)
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 <edumazet@google.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c

index 161b628ab2b08bf4321dbe617022c4c50486534d..edcc1e19ad532641f51f6809b8c90d1e377081ff 100644 (file)
@@ -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;