From patchwork Thu Jan 19 03:44:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 716954 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 3v3qVX48vbz9t8j for ; Thu, 19 Jan 2017 14:45:24 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CFc+7OrR"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752015AbdASDpO (ORCPT ); Wed, 18 Jan 2017 22:45:14 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:36810 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751996AbdASDpM (ORCPT ); Wed, 18 Jan 2017 22:45:12 -0500 Received: by mail-pf0-f193.google.com with SMTP id 19so2353973pfo.3 for ; Wed, 18 Jan 2017 19:44:44 -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=/nvO2KglZzVXvIW0hOuHmcluwJFllBsLicd4K6qNWNU=; b=CFc+7OrRmPNYH9+/rJzlgU2GpobX7VKW3HoSEuID+bdsJ+0guFOiZj2sOAC1Z3P5sO JMhL/85Qte7DxOSAQZiPBfoqsTZKTJI4fHuSeFgJMuE5EmfffZRxf62lGHEkT+8KXPsV E5dKoMnMU+4AqKEKBKSNK8tFY/vRF7NxPuEPlSxCjQmPY3UN/nyhHpmDdxq2yheBSRpd 3/nEr+YEDGRmgl6CvCKqpWwTI2uEbFNpAUSjESRDxC2QALzYxipSy44IVLVZQogjP1hm Abd+JeRUnCGwDU5d4LzHpiaYXhFNumA0xpx0fFkib1OUUELaQIVrqY7QK0O1Sv60B5tS KXRA== 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=/nvO2KglZzVXvIW0hOuHmcluwJFllBsLicd4K6qNWNU=; b=NfDtEDxs/2YHvXfkF13wptusOIVy0xRtzhqImMFdOhh3Vnw5x3vyxJblYO3v+ASouC WlSveYQA7ap1I8dxc1q+5bMGCwO1uIpuLbpcU+Q2VF62aMTfAAD9Xrkj3VvJEUT03cD0 lfxqDWkuAkxyIRumj2SyygI/kvQ0+VdqxJPP1okPdbId50SDDSmN5MVnmbtzqhwDXgRN lHpDXd1ZIbDTuVk2jY/COwMN0DJ7aU35b75jONBkSdPzcJwSdoBU8R2IVkb0xA56FUP5 I5Yxcgiqq/G91plsfssvVsvJDkoMhiUPevoTSeqNZy/nW23C+4Qss8Vv3mUkXAguRFgl BX+w== X-Gm-Message-State: AIkVDXIfcxBaAQzB19vlJ90iCZ1QINUM7ZvPCxOgZedWEXoVHm/KFdqMQ5hJlNYTDuxS0w== X-Received: by 10.84.149.139 with SMTP id m11mr10139355pla.38.1484797484007; Wed, 18 Jan 2017 19:44:44 -0800 (PST) Received: from [172.29.162.55] ([172.29.162.55]) by smtp.googlemail.com with ESMTPSA id 66sm3902305pgg.47.2017.01.18.19.44.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jan 2017 19:44:43 -0800 (PST) Message-ID: <1484797482.16328.13.camel@edumazet-glaptop3.roam.corp.google.com> Subject: [PATCH net] gianfar: Do not reuse pages from emergency reserve From: Eric Dumazet To: David Miller Cc: netdev , Claudiu Manoil Date: Wed, 18 Jan 2017 19:44:42 -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 that had to use 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 the RX ring buffer would suffer from drops. Fixes: 75354148ce69 ("gianfar: Add paged allocation and Rx S/G") Signed-off-by: Eric Dumazet Cc: Claudiu Manoil Acked-by: Claudiu Manoil --- drivers/net/ethernet/freescale/gianfar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index a6e7afa878befd1abe00404b2cd4becfa174d103..c1b6716679208a69bc66f017a68e5b6e35c60064 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -2948,7 +2948,7 @@ static bool gfar_add_rx_frag(struct gfar_rx_buff *rxb, u32 lstatus, } /* try reuse page */ - if (unlikely(page_count(page) != 1)) + if (unlikely(page_count(page) != 1 || page_is_pfmemalloc(page))) return false; /* change offset to the other half */