netlink: do not enter direct reclaim from netlink_trim()

In commit d35c99ff77 ("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>
This commit is contained in:
Eric Dumazet 2017-01-13 09:11:22 -08:00 коммит произвёл David S. Miller
Родитель 3be0679b4a
Коммит e89df81317
1 изменённых файлов: 3 добавлений и 1 удалений

Просмотреть файл

@ -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;