From patchwork Thu Jan 19 07:03:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 716963 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3v3vtx2K8Wz9s9Y for ; Thu, 19 Jan 2017 18:03:21 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="QgwIPUvG"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751389AbdASHDN (ORCPT ); Thu, 19 Jan 2017 02:03:13 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:35063 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750955AbdASHDL (ORCPT ); Thu, 19 Jan 2017 02:03:11 -0500 Received: by mail-pg0-f67.google.com with SMTP id 204so3428570pge.2 for ; Wed, 18 Jan 2017 23:03:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:mime-version :content-transfer-encoding; bh=qhHCt+OwXYaKhRkJhLLN/fWzovFnmxgSLvN5+/3TeRc=; b=QgwIPUvGPsIfFwKVRWeke8IvpW5zd9rDcmGXLhPGJ5KfjlNHSJSH9OBvG7Tke4sqLA LJyw3tCrypDPblrBZTfXP6jvL2A78fnao4L4PZo3wEaSNfiRc9D8yL+U6Rb3GL06gDg6 yFjqFJrQQ8l+bZjldVuOZeQiWXQ4ahKNVtRsC7eZ/fOTXLfWIVYakbVeJqkW8eE1g4Db R+GpDnqLmtrJ9AXHQ5myTUxkbEtKFnoFrg4CrhHP6BTnM6plTDHa7UwTKSPJwVpdZnn0 9R7hnABScOT9nq1rajHacPL0qaS+2+wyiNnal1Db4e4sNBv6qNFs6BPyigmWmtuD7c/T /Y8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:mime-version :content-transfer-encoding; bh=qhHCt+OwXYaKhRkJhLLN/fWzovFnmxgSLvN5+/3TeRc=; b=TXc0G6wigcj4ibqVWo/QmbSR1nxIjTnU0JY83XuJcOmzlfaY4BMqHprr7TE46M+sE4 XYT5ubEQ2kRgEmB56QQ8anV6DPk+rdGSaOSC0vy2S7P67C5Xc+9FZKnVz35F6sP6rqQM Nd/ji+gIvgTer0vbXoRHHvU97wRItIRwp6jK4PWoNTbwVKPkYtsAlUvLazHzqCkzhXTN 4rgjMbZTOdVCGZRriAV1h/IA98gfGqpbYa3qVT0IyePz3nWxn6zXA16+pkUZU1Kb8pgj nZm00GtmsqisP336cCxC53OkoPa+FlKNvMd1qOiUEOrmnNpucvrQykblbuezo1h7WP0F XZwg== X-Gm-Message-State: AIkVDXLoPVBa0VxdROxBky7Cn24Os8Pitkfg1tCTn2LVzmc0Gu1JWcLZ8KRMufwQ9bmKwg== X-Received: by 10.99.127.71 with SMTP id p7mr8543305pgn.125.1484809390595; Wed, 18 Jan 2017 23:03:10 -0800 (PST) Received: from [172.29.162.55] ([172.29.162.55]) by smtp.googlemail.com with ESMTPSA id s136sm5579281pgc.38.2017.01.18.23.03.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jan 2017 23:03:09 -0800 (PST) Message-ID: <1484809388.16328.19.camel@edumazet-glaptop3.roam.corp.google.com> Subject: [PATCH net] net/mlx5e: Do not recycle pages from emergency reserve From: Eric Dumazet To: David Miller Cc: netdev , Tariq Toukan , Saeed Mahameed Date: Wed, 18 Jan 2017 23:03:08 -0800 X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Eric Dumazet A driver using dev_alloc_page() must not reuse a page allocated from emergency memory reserve. Otherwise all packets using this page will be immediately dropped, unless for very specific sockets having SOCK_MEMALLOC bit set. This issue might be hard to debug, because only a fraction of received packets would be dropped. Fixes: 4415a0319f92 ("net/mlx5e: Implement RX mapped page cache for page recycle") Signed-off-by: Eric Dumazet Cc: Tariq Toukan Cc: Saeed Mahameed Acked-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c index 0e2fb3ed1790900ccdc0bbbef8bc5c33267df092..ce46409bde2736ea4d1246ca97855098f052f271 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -193,6 +193,9 @@ static inline bool mlx5e_rx_cache_put(struct mlx5e_rq *rq, return false; } + if (unlikely(page_is_pfmemalloc(dma_info->page))) + return false; + cache->page_cache[cache->tail] = *dma_info; cache->tail = tail_next; return true;