Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752470AbcD3TyS (ORCPT ); Sat, 30 Apr 2016 15:54:18 -0400 Received: from mail-qg0-f53.google.com ([209.85.192.53]:35145 "EHLO mail-qg0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752022AbcD3TyQ (ORCPT ); Sat, 30 Apr 2016 15:54:16 -0400 Message-ID: <1462046052.5535.190.camel@edumazet-glaptop3.roam.corp.google.com> Subject: Re: __napi_alloc_skb failures locking up the box From: Eric Dumazet To: Aaro Koskinen Cc: "David S. Miller" , netdev@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Date: Sat, 30 Apr 2016 12:54:12 -0700 In-Reply-To: <20160430192402.GA8366@raspberrypi.musicnaut.iki.fi> References: <20160430192402.GA8366@raspberrypi.musicnaut.iki.fi> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1292 Lines: 36 On Sat, 2016-04-30 at 22:24 +0300, Aaro Koskinen wrote: > Hi, > > I have old NAS box (Thecus N2100) with 512 MB RAM, where rsync from NFS -> > disk reliably results in temporary out-of-memory conditions. > > When this happens the dmesg gets flooded with below logs. If the serial > console logging is enabled, this will lock up the box completely and > the backup is not making any progress. > > Shouldn't these allocation failures be ratelimited somehow (or even made > silent)? It doesn't sound right if I can lock up the system simply by > copying files... Agreed. All napi_alloc_skb() callers handle failure just fine. If they did not, a NULL deref would produce a proper stack dump. When memory gets this tight, other traces will be dumped anyway. diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 15d0df943466..0652709fe81a 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -2423,7 +2423,7 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, static inline struct sk_buff *napi_alloc_skb(struct napi_struct *napi, unsigned int length) { - return __napi_alloc_skb(napi, length, GFP_ATOMIC); + return __napi_alloc_skb(napi, length, GFP_ATOMIC | __GFP_NOWARN); } void napi_consume_skb(struct sk_buff *skb, int budget);