Received: by 10.192.165.148 with SMTP id m20csp545071imm; Fri, 20 Apr 2018 10:56:36 -0700 (PDT) X-Google-Smtp-Source: AIpwx48m4JugBs4tC1XiaAUyAY9xcqlntvcugnl3SJkdT+PehwW0kKB2kHZ/LqvnjT/lwXS4wOhL X-Received: by 10.99.64.131 with SMTP id n125mr9170613pga.303.1524246996508; Fri, 20 Apr 2018 10:56:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524246996; cv=none; d=google.com; s=arc-20160816; b=QkAP9n1O86qtZ/9WOreG4WeLs65qDlST61YKLKlP89SGhsWFfCO7x6NqQJb0z5PZ3O BniAGI6MTl0twUnpk6BwQ9SL6wv6I0gfLg6W17zaHbpStS4qDpei9ialg1Wn28yYEOQX okklK+skgL2uSYCiNre6yqYDRkrDSHYg03n/dQ4xT29VLDKi5R46PXruvqzezjDbDDrX AjvHh7N7oOIwPdFG8r2xy8Jqy/tV5O63IpVBs2SFKVPkVswIty1DQvYOhkx7LlAMF5la pwHN/mgDBVzoRZIskWxCfgIVaL8yMMzRX1jxlRphqImXFCH5nGTzdVknG6XPG+S00d53 ZT8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=icClpqSBFke6YRvcl2Adfiz7WUiAe7uFHwk8s6ul96M=; b=K+aWUQWAYVLxL0a7W0FI8HMgX2sD2KjBZ3oTTkvU0kcdT+rH34OkTb6+ZJ1aZDzhGY S21sK+fj3QEnmZyddYBgBNkhGRQTcX1bzX5l0JxNpTLplH7YewQSJhS5LdGQyoNQ6J+T 1E8FSeKNY3bfIuvcEEzQlXrz4oLl36fU88BwHgNFWGKX7RlYE/j3xo+K35A3mFWuTUq0 vtYj4EDffFq0rq3PJ+G1NBulka/+rlqbZUBQMFIFsLOHs3zN0/xkq6ZwbSnamQ4jBhB8 kUiuirIN0NgWR+xxqbStcckgzvL7+31gAjwaCQdTLyEMVbMmUQLiyMeggiSUoIQ49s3y NFLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MXvaPaQJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 64-v6si5926968plb.574.2018.04.20.10.56.21; Fri, 20 Apr 2018 10:56:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MXvaPaQJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753581AbeDTRxW (ORCPT + 99 others); Fri, 20 Apr 2018 13:53:22 -0400 Received: from mail-pl0-f67.google.com ([209.85.160.67]:32770 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753554AbeDTRxT (ORCPT ); Fri, 20 Apr 2018 13:53:19 -0400 Received: by mail-pl0-f67.google.com with SMTP id w12-v6so5666400plp.0 for ; Fri, 20 Apr 2018 10:53:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=icClpqSBFke6YRvcl2Adfiz7WUiAe7uFHwk8s6ul96M=; b=MXvaPaQJwbiPwhtDXw+GtOHbkjZzQGW7awyvRV14VwOKG4jRv0/BQaUIYepTkDoInc uX48L1mZSnlN2+9ZUUXRlB40e0Ho3PuydstR3UJc9avcJGuyEp0XnNKDyUpR+H29iFT+ THzK1nAAzq3+ahbEQwh4cK8uT9BtBSu2rD7p4Yg4qBWMrkTAQSGjIek4abciXfAomrkW PWYF0oaHpGZAkGdkKIDT788HWJchU0CFw23EtEV84xdL8+PKABCqJO/y1ijc1BMXcrz+ Jf93te3X3x6DvaKSlPQ3JYeJWadcgExelpjJAMivWqJ+lEUh9EwkX7Y/HX5Cxk5yJgJf Ztjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=icClpqSBFke6YRvcl2Adfiz7WUiAe7uFHwk8s6ul96M=; b=iqz3VFoKmboN57tVe1Enlk2nNlXVs+kaGdJoov4iz347h5hTNGB91cMQCs3WqOdXDJ JhcZ0xQ27qJpmbJyqYCEBKTJs/yaabocWftetLEk1xlwRBEn91XyRdTAyRkEKGLjTLJ/ DvQPVzFWgOEcRfOndg3uysorTFyHFa9wf9+UxMeDiZ5pRvPMp20hys3xiMEg12UhVl4V 36OC/n2vBdXDR9bLUuXm5cI8PojRq/rxy/cj2BaNL2Uf763h1iAhP89V1n/eTnZU7ciz Dt/M+P866ffqJprW1yzXhDM8B/IibMwInd2heMWUIiKxsslfuK8YQIQ6mjdHOIF7HEMq lT7g== X-Gm-Message-State: ALQs6tDk234YwlfVm5i46Y4Mlki/qPAFvJs7jz5aknPd/n79boMAP8mX fhnvD6RnyCLZvJTnPhXh1JFKsJDy+VA0GYF7xyeBLaEv X-Received: by 2002:a17:902:595e:: with SMTP id e30-v6mr11047197plj.233.1524246799243; Fri, 20 Apr 2018 10:53:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.147.130 with HTTP; Fri, 20 Apr 2018 10:52:58 -0700 (PDT) In-Reply-To: <20180420175023.3c4okuayrcul2bom@armageddon.cambridge.arm.com> References: <1524243513-29118-1-git-send-email-chuhu@redhat.com> <20180420175023.3c4okuayrcul2bom@armageddon.cambridge.arm.com> From: Dmitry Vyukov Date: Fri, 20 Apr 2018 19:52:58 +0200 Message-ID: Subject: Re: [RFC] mm: kmemleak: replace __GFP_NOFAIL to GFP_NOWAIT in gfp_kmemleak_mask To: Catalin Marinas Cc: Chunyu Hu , Michal Hocko , LKML , Linux-MM Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 20, 2018 at 7:50 PM, Catalin Marinas wrote: > On Sat, Apr 21, 2018 at 12:58:33AM +0800, Chunyu Hu wrote: >> __GFP_NORETRY and __GFP_NOFAIL are combined in gfp_kmemleak_mask now. >> But it's a wrong combination. As __GFP_NOFAIL is blockable, but >> __GFP_NORETY is not blockable, make it self-contradiction. >> >> __GFP_NOFAIL means 'The VM implementation _must_ retry infinitely'. But >> it's not the real intention, as kmemleak allow alloc failure happen in >> memory pressure, in that case kmemleak just disables itself. > > Good point. The __GFP_NOFAIL flag was added by commit d9570ee3bd1d > ("kmemleak: allow to coexist with fault injection") to keep kmemleak > usable under fault injection. > >> commit 9a67f6488eca ("mm: consolidate GFP_NOFAIL checks in the allocator >> slowpath") documented that what user wants here should use GFP_NOWAIT, and >> the WARN in __alloc_pages_slowpath caught this weird usage. >> >> >> WARNING: CPU: 3 PID: 64 at mm/page_alloc.c:4261 __alloc_pages_slowpath+0x1cc3/0x2780 > [...] >> Replace the __GFP_NOFAIL with GFP_NOWAIT in gfp_kmemleak_mask, __GFP_NORETRY >> and GFP_NOWAIT are in the gfp_kmemleak_mask. So kmemleak object allocaion >> is no blockable and no reclaim, making kmemleak less disruptive to user >> processes in pressure. > > It doesn't solve the fault injection problem for kmemleak (unless we > change __should_failslab() somehow, not sure yet). An option would be to > replace __GFP_NORETRY with __GFP_NOFAIL in kmemleak when fault injection > is enabled. > > BTW, does the combination of NOWAIT and NORETRY make kmemleak > allocations more likely to fail? > > Cc'ing Dmitry as well. Yes, it would be bad if there allocations fail due to fault injection. These are both debugging tools and ideally should not interfere. >> Signed-off-by: Chunyu Hu >> CC: Michal Hocko >> --- >> mm/kmemleak.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/mm/kmemleak.c b/mm/kmemleak.c >> index 9a085d5..4ea07e4 100644 >> --- a/mm/kmemleak.c >> +++ b/mm/kmemleak.c >> @@ -126,7 +126,7 @@ >> /* GFP bitmask for kmemleak internal allocations */ >> #define gfp_kmemleak_mask(gfp) (((gfp) & (GFP_KERNEL | GFP_ATOMIC)) | \ >> __GFP_NORETRY | __GFP_NOMEMALLOC | \ >> - __GFP_NOWARN | __GFP_NOFAIL) >> + __GFP_NOWARN | GFP_NOWAIT) >> >> /* scanning area inside a memory block */ >> struct kmemleak_scan_area { >> -- >> 1.8.3.1