From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 07540CA0ED3 for ; Mon, 2 Sep 2024 03:23:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F58B8D006B; Sun, 1 Sep 2024 23:23:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5A53B8D002D; Sun, 1 Sep 2024 23:23:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 494E08D006B; Sun, 1 Sep 2024 23:23:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2AF048D002D for ; Sun, 1 Sep 2024 23:23:54 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 714BB16195A for ; Mon, 2 Sep 2024 03:23:53 +0000 (UTC) X-FDA: 82518353946.10.FBA7A9C Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by imf29.hostedemail.com (Postfix) with ESMTP id B548012000A for ; Mon, 2 Sep 2024 03:23:51 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=StcuD7GS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.219.44 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725247327; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/JsOh4eJLw9lku1Yzzi6p3fIeNOQvtLY0PzxWcPBCq4=; b=J7hhVXxu1bytaLnD9N0RorTWOkAT82uofYQK6jjn7tORIjUQD5DDYcEB23NATgBOKUlm/8 s//fvJ9ZsYC5afLHl53Kqmp7fHrPnaRZNQf46bpufiYmd2vbz0S/d84eYrtHScNCwjRT1B A4+NZURp6JyjOShy+dMteubwRtxZ8v8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725247327; a=rsa-sha256; cv=none; b=T8BMCGYSbo/LAQDJt4K4/BMkLKkCiuLs47TGOnJySGysmviDFoaBBiI5sqt3cVYoZeDcU+ CjmUu8pVPGWDHaYIaLSLccgUlT9ocZecDFBSrYqI/VzjIgvS32/ZSMVHn6shbxnF0DOc/2 iQ3RO0IohPLEKCJboouf4/uE4Ea0woY= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=StcuD7GS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.219.44 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6bf7ad1ec3aso20353546d6.0 for ; Sun, 01 Sep 2024 20:23:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725247431; x=1725852231; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=/JsOh4eJLw9lku1Yzzi6p3fIeNOQvtLY0PzxWcPBCq4=; b=StcuD7GSrt1o74WWTwxCRFW5h/kUHNWcEZCEIw8HoNO9NRRYnvL+OpIgZQzGKM1H8w 0hcPd/jJbCyStPBYIrUiR1u2DXROlofKkzalh+1In4IOo2K0KxhESs3I8n2ey/ZQZA+X PM5+yUl8ZMcLVP8Pvl5PtByTcsAeyNGmz5CoadUtNoBblkXZiAeR9BJjl17zaCYiDdAb 2otTKuiGgHJex5nrcQQogSakpPQf3uTtnrr/8IsjJDPd5NpBySftdQYy0ePU5Ee+OCDE C159AupaV/3r3w+/ZRTrtUJrAdDJ3ACGjALJXKxyxQjcpUog3TKD98hdRXds2dnLbkV/ PHOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725247431; x=1725852231; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/JsOh4eJLw9lku1Yzzi6p3fIeNOQvtLY0PzxWcPBCq4=; b=hNQDMD37sppXDPbYUps0HJPSe5Mb+kMZ7emkh0RPm19SFMHARJOK0nB1h/+5cibZ36 NviSJOK6o0twOuhVU61tMXbSlNlHl/fEoat1VH5D+N8phAe6WF0PldZu40KmVeGBSndc zX8NPVzTt8LIMLx9C4iDUKZ1b3FUKwlMPK0EFHHjpROSC63t24ntCuZ35FiTKSnLwtfG qZVVQoJs30UStIWu4G9+TUmbThnPKzVUeyKmdgO97CBIgIXa41quHC5rko/ulqHyzX27 SHln0ho/q6uq86C2FJmnM8O5msRhaut0kX/3Z5ben6Vbd/0wDPsxtcv3VxJEoxsTyzHv Ibpw== X-Forwarded-Encrypted: i=1; AJvYcCUsmsvRM5ZgYGaaxJC1LPyzA1jAdXpU5S2UdS9a5G3ZdCkH6Hh9QVky8babrIZKOxNraSoStuwl9g==@kvack.org X-Gm-Message-State: AOJu0Yx1r5tCqY4RX2iRUUExDBDsWb+VeF8Prnj1xyvG2gciD+hPVb+d 5QWG6+Y0gNu6RzFPKX2kRD2PAONQjG+lxgMolLMc6jejDKKaNoA4903ayColi69lSnNn+OsTr06 m0z6aWFl4+9QXFeCLRSx/yHGRE88= X-Google-Smtp-Source: AGHT+IGy7CqgZwj0mhGg04pITnfOwEQyj/TqEXX5/qFSF7FOQgHEIu6BKRvj8+Ne7YHUc9gmoU/8iIAvRzSk5zK4750= X-Received: by 2002:a05:6214:460c:b0:6c3:5f11:6e41 with SMTP id 6a1803df08f44-6c35f116edfmr47806656d6.48.1725247430578; Sun, 01 Sep 2024 20:23:50 -0700 (PDT) MIME-Version: 1.0 References: <20240830202823.21478-1-21cnbao@gmail.com> <20240830202823.21478-4-21cnbao@gmail.com> In-Reply-To: <20240830202823.21478-4-21cnbao@gmail.com> From: Yafang Shao Date: Mon, 2 Sep 2024 11:23:14 +0800 Message-ID: Subject: Re: [PATCH v4 3/3] mm: warn about illegal __GFP_NOFAIL usage in a more appropriate location and manner To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, linux-mm@kvack.org, virtualization@lists.linux.dev, david@redhat.com, 42.hyeyoo@gmail.com, cl@linux.com, hailong.liu@oppo.com, hch@infradead.org, iamjoonsoo.kim@lge.com, mhocko@suse.com, penberg@kernel.org, rientjes@google.com, roman.gushchin@linux.dev, torvalds@linux-foundation.org, urezki@gmail.com, v-songbaohua@oppo.com, vbabka@suse.cz Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: B548012000A X-Stat-Signature: zbzm6ia7n1apj6f6yfe6b86yfen845zh X-Rspam-User: X-HE-Tag: 1725247431-531840 X-HE-Meta: U2FsdGVkX1/YvgIXUH8cV4KChqtTnTaMFHS8Dh+rFSTuMfqHduxtujMpvNyOf7FIKtx3/Vr9rIJhcw6IvR8v6a/+HAT66p/kfRPJpUMfUUMcJvGfeQ2FVTMOe037oRxeTpgmuFqO8hbaKWpYlTcatWiHYmzRYE74+G41bpL9Ct3cx4377qk36mdqVZnJDOWBFlYNn14pPd3xrMlNiha+/FBxGWy+sOxPiywt2yOwKcEE5M96qU4ic6GNli8xfDJL736f+V4xciO8hi208FAPedK9EbEuwmH03u0ncwcTA5F4ypa65nxB4P7nJ9cpYqUPbQaF2JU7u+CLkP5PJJPMVXJx7nLx0s62Vhs5vodeyyd3HICJNnHRbs3iO3SHpbYbq9I6tbtQnwxYYEEjLnhnj/3oFjl80f4cS5brvNbEEbbCkCl0MtUOFYCuMQTZs7Gyc7fgT2wSgklOyGMvDxDGuAD9h59mJo3N0mGokLMnXxUfx7pgruYri4Wxy53xclbYJCezBSNUeKg2ndzVZa8338/L5GXov+cwssY//oEtzIwGmyhvxaup/tc/vFfq19e4SLe7aAwdSRJxbQ1xgHQxZESVHHxPPC2lV3zT7IakorzL02Nf8uLQw1w57dJ7eGDVEPUJmwU9xVzRZ4VRGMIN9F5DD2saFxR96Q7ztcjiAy4p/OQXJ50JS/ONQXRrSJJPhATbk5Doz15bzduEBxWYmUviDXw2CWv6ZjOFfn8KQip3FQPAdwN2jFplMe8i+al31ZqjcKwSizkT+VtdSw5ZTKGFim76BI1m/uOHpSL9ISRO87ww0tL6sc1uTwqTGpAK2Fev2pZ9W9nG6PDwlvZfz7IcIIsu+KlWoSxB8w/uVtmNliCdFiZmWkkj2pBPfbvN55w+9KJwvrYlXJB7HYIMIQej0eTw3T5+cqfX3vhPe+mcTSbFPT/FWuavFwiBGE6EUKAcfGH8YdVruBapJ40 MOOyATpF J3dEoi26nYeFSwyh9C8VE+Go5Lv6SoGt8ciuhBeYznRzDbN0Z3m5Bbrpwgk0ULYsGjohCZMkycJz9tvm2nRjd38J5Pk5AmC4QtpX5bHhpAu+QVLKDwLWX2z9RqUZiAc7YSb8LaqfsMuSGQrfsibUlv2zYeheNwFPTT2QT1UisqtARTsgOrbEIeF059W9tD0fEmsBR6qUH0LYO5d9hMUvMaejkNbRXAPqi47isDUW+eJ4mmCeNz7tD5gNZC3wJkN/pW0qi9BzXvfrnTyVr0JHIw07576DZH/BmefGhf9TXK+tuEfL4ElL9+UVmnoYIowOIo69szrTjTV+XbrfgQdncTjxDP+pEIbHLFvExz9rvuFWJBoBeBjnCpngNTiU0V7NNIUb6fiT0x+a0PGcyrXZbMdTv2KUQdYY49YBDMBKq2FH86il+UIDHZ+6q1TxjWuYWxudBisOklgeAqb6WmaSj78xzjGDNlsTpBhivAwfBUzbJjJw9Vl4JeocWsGVOJ2BJJ8e7WyLi2jqMRnQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sat, Aug 31, 2024 at 4:29=E2=80=AFAM Barry Song <21cnbao@gmail.com> wrot= e: > > From: Barry Song > > Three points for this change: > > 1. We should consolidate all warnings in one place. Currently, the > order > 1 warning is in the hotpath, while others are in less > likely scenarios. Moving all warnings to the slowpath will reduce > the overhead for order > 1 and increase the visibility of other > warnings. > > 2. We currently have two warnings for order: one for order > 1 in > the hotpath and another for order > costly_order in the laziest > path. I suggest standardizing on order > 1 since it=E2=80=99s been in > use for a long time. > > 3. We don't need to check for __GFP_NOWARN in this case. __GFP_NOWARN > is meant to suppress allocation failure reports, but here we're > dealing with bug detection, not allocation failures. So replace > WARN_ON_ONCE_GFP by WARN_ON_ONCE. > > Suggested-by: Vlastimil Babka > Signed-off-by: Barry Song > --- > mm/page_alloc.c | 50 ++++++++++++++++++++++++------------------------- > 1 file changed, 25 insertions(+), 25 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index c81ee5662cc7..e790b4227322 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3033,12 +3033,6 @@ struct page *rmqueue(struct zone *preferred_zone, > { > struct page *page; > > - /* > - * We most definitely don't want callers attempting to > - * allocate greater than order-1 page units with __GFP_NOFAIL. > - */ > - WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); > - > if (likely(pcp_allowed_order(order))) { > page =3D rmqueue_pcplist(preferred_zone, zone, order, > migratetype, alloc_flags); > @@ -4175,6 +4169,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int= order, > { > bool can_direct_reclaim =3D gfp_mask & __GFP_DIRECT_RECLAIM; > bool can_compact =3D gfp_compaction_allowed(gfp_mask); > + bool nofail =3D gfp_mask & __GFP_NOFAIL; > const bool costly_order =3D order > PAGE_ALLOC_COSTLY_ORDER; > struct page *page =3D NULL; > unsigned int alloc_flags; > @@ -4187,6 +4182,25 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned in= t order, > unsigned int zonelist_iter_cookie; > int reserve_flags; > > + if (unlikely(nofail)) { > + /* > + * We most definitely don't want callers attempting to > + * allocate greater than order-1 page units with __GFP_NO= FAIL. > + */ > + WARN_ON_ONCE(order > 1); > + /* > + * Also we don't support __GFP_NOFAIL without __GFP_DIREC= T_RECLAIM, > + * otherwise, we may result in lockup. > + */ > + WARN_ON_ONCE(!can_direct_reclaim); > + /* > + * PF_MEMALLOC request from this context is rather bizarr= e > + * because we cannot reclaim anything and only can loop w= aiting > + * for somebody to do a work for us. > + */ > + WARN_ON_ONCE(current->flags & PF_MEMALLOC); I believe we should add below warning as well: WARN_ON_ONCE(gfp_mask & __GFP_NOMEMALLOC); WARN_ON_ONCE(gfp_mask & __GFP_NORETRY); WARN_ON_ONCE(gfp_mask & __GFP_RETRY_MAYFAIL); ... I'm not sure if that is enough. __GFP_NOFAIL is a really horrible thing. --=20 Regards Yafang