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 69F58C52D71 for ; Fri, 9 Aug 2024 09:31:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F1AD46B009A; Fri, 9 Aug 2024 05:31:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EA2CF6B009C; Fri, 9 Aug 2024 05:31:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D43DA6B009E; Fri, 9 Aug 2024 05:31:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id B43DF6B009A for ; Fri, 9 Aug 2024 05:31:54 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4E6EC1C40FC for ; Fri, 9 Aug 2024 09:31:54 +0000 (UTC) X-FDA: 82432190148.11.D6F9AB7 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf08.hostedemail.com (Postfix) with ESMTP id 62CA2160021 for ; Fri, 9 Aug 2024 09:31:52 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=KW2pgutr; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf08.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723195839; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zNbaepAcuh1uOoVIl5NbzLuq//ai16vzEXAREzK9k2E=; b=p2pmnYnyJBaXF8akzztA0zD9ac2GHQ6PvFth8e+aIsrmp5uXeCjHeAwsVL1LLfd8sbBKpZ GKfX2/T4Mgul/eo48bWlyWWv2qLWQcT4YlixJsuytxW4hBdRmNBMhkU0mZdblt+3eb04SR uCQAlzjDAJtqmYw+j3+q7Vx8i2DAfy0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723195839; a=rsa-sha256; cv=none; b=xCsF6/DU1uNm9rkgBpwlfn/qSideOwo1w9p1ZZEQNIWournHFIg1m4tkVla9lcfWy96DVp 9GXDtyvq6DAjJ/TQGUBLuY10jmwJAbJQSEbgbFevhFM/SoaP4nnul7cZiaqDL1udBf5WPU 0xeapcXc8Mu0CAHgqCe6HZabMDkuXbg= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=KW2pgutr; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf08.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=mhocko@suse.com Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5a1c49632deso2019141a12.2 for ; Fri, 09 Aug 2024 02:31:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1723195911; x=1723800711; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=zNbaepAcuh1uOoVIl5NbzLuq//ai16vzEXAREzK9k2E=; b=KW2pgutr/DUl2NXinQDX8gmU34kukASDQPZaH+98txw7zY9tjpraBlUQR4Tlqiro32 YFmoIl+BukImUSWd4MlVjOFTQ0LESXRQKksK4LmWFz9eYKpxLJZMkePBFjQ+N4m1JXLM NQnNLuahLLBScyWcoiUI29TEjBxwkbYNGNpzeTcG5qSCe9AmClngzdEaIGaIhZ93IORQ TgnTwpXjbSOypiAH85EIouxZTNWCC0C8tJjFBTaFOPFiXOEspCbeOfeVZpaRf6jyvB83 ympd0fZLqwESwsS5HT8U7cmRf2GHDHDjLfCNfMKm2l4jLgiRnnkC/idt2sA8CT1zYHqM eTfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723195911; x=1723800711; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=zNbaepAcuh1uOoVIl5NbzLuq//ai16vzEXAREzK9k2E=; b=PNupf8F4SpNIacBxz31SD58sNpS+i9RzQNl5PcSybQ1zi9uXbzX4LT90ys+wypo5UD ERhgnl2YsdhUzflUtm+1usCK4XWaf/XRFL+9yw63BjCY6rEHQNkwrENJOOsD67axN0eF I+NeWTE+cS5wQL+hMEpFoQlatBzpMAX81QAwlQVjm+Ys5dQveyotIiYbyzkk2/ANryLZ NSwhNIuKeFU+QWOZI/wtwLYmuUuMk5Fxlw1bxqdzXhicAEYa+FfdEvvKrubs0hjm3GRz dEzdKRuGYJVyy5BG89O3wk6ygSUUgrTUBZq0vc1Yo6LFotdUXwNg30eHdqq9pE39MjJC S1lw== X-Forwarded-Encrypted: i=1; AJvYcCUs4INfa6NGTwbl90VjWgc0X/DNxxD/eoD4UL0GOTniR7lsFlZ7Zrb/kzKPvUN7nvqzNYsRpimiL2Tiyvgk4gvaAO0= X-Gm-Message-State: AOJu0YxIJC4b18lIMgiOWmzrUY58op6AsYcRUlNC0RmQTbupo1URhXZJ loZWGgxRKbFTLtwZXOyVvktilfD5jWjLw6VQ6RDLPVjFmg7AFBy2//VdvrwCmH8= X-Google-Smtp-Source: AGHT+IHAIMaBHg4JzZJAXLYjFpR/mjiI1/cbeLj1NwNJkTlOJvpkL9lvhUk59mzSP9BW1C0d8esogQ== X-Received: by 2002:a17:907:c7c5:b0:a7a:9f0f:ab26 with SMTP id a640c23a62f3a-a80aa59b3dfmr88746566b.23.1723195910794; Fri, 09 Aug 2024 02:31:50 -0700 (PDT) Received: from localhost (109-81-83-166.rct.o2.cz. [109.81.83.166]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7dc9c0cc4fsm830237866b.77.2024.08.09.02.31.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Aug 2024 02:31:50 -0700 (PDT) Date: Fri, 9 Aug 2024 11:31:49 +0200 From: Michal Hocko To: Hailong Liu Cc: Andrew Morton , Uladzislau Rezki , Christoph Hellwig , Vlastimil Babka , "Tangquan . Zheng" , stable@vger.kernel.org, Barry Song <21cnbao@gmail.com>, Baoquan He , Matthew Wilcox , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v1] mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 Message-ID: References: <20240808120121.2878-1-hailong.liu@oppo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 62CA2160021 X-Stat-Signature: i7cbd3615atr3to5k3c37frthjh3d687 X-Rspam-User: X-HE-Tag: 1723195912-980990 X-HE-Meta: U2FsdGVkX1/dsJcXEYlqHT9izCaNDflzJInQ3IvLVlCGBunHuQ+d0UWYYtdHHOtuKbQj14tp2Eg5J8GAwgFXXLsCnlGDJxr3Ct9aqYJ5DgW0uV9f7d6I3hZ7VUOZm+tEx6B3Mv4x8M/9Vws6FQKS3ZPUwr7b7ActEsTrSSg2/rt8djdWIxHI1yNhwrO2r5EDdvl8xzQBJrcpg4sV1zLbfznYFVyKvLZ6jzGEyQdUGHsn4/+aH0TdX724A/37y3CVvJCDzNUJakIp+tOK1lLpQj8pqnTVQYJcWy5vGTsC9lKHgi83QczseNfvNLEJB8It4eg75PkKyqQpLPzK4Nnrsvg6y9/CUP0wd2BLzF+RImu1CyE29mL2qIHGIP+FVlXdpTK306XIJK0r6oy2vHNS51YgWIJBU2ObOBfqjmIMGu7Ulta4A6QNP72rbCvq6pZKVW7b00c2HlZ8DqzBuOTzTcRyc7JQ/7c9qNoM1kD6O7smguUPA5xO/NdNj0zu8FF0jqA5wK4JAJ3hORRYuQsi1PCFr2E0bLUc1feA60odsU1sx2ZM2mrUAnpkS3heFpndmMkiYsnjJnX6pTAuBy2Wqi2y4/z9JcDSvI34WaYCpTgTfeTHaMXS7mM5yfL4fyOd9vNj/5tu/432MJ+QOrxHd15NCrgvbAuh4BLLFqhHnMVHealqPB19neXFeDKhsXmlI9jaOBne4d9NRd5NmzL0ltjDuGPZvrtIRgOE8PFZbODZK4u2nVoIt4lAIrl/DSn1qymmXlfv8fuF1BcDS2yv5iJxiiV6h0a01cDeHtd0zcTZ9ZjZMJE877wsPzvmN292WRDh8obtZgU+CVES8p7xou3Jj1zXswJmefweJkNW4LAWzkoO5a0tR1UNw094T9dkUGAX7wuo3kpiZwSVM6bGys33cSh2PnX5m6m6jlA1cvJJ/054H8Yzz0NLlcS+y4uER85KZ7Sbd4EBKZlne2s Yb9dRie8 ijjV1F3oamsCag40P3UsjkLBtvhKDjYp4orm0lcb8clDzZZ7WItlwllvoGQnLTTD+kg5WkaCwQBBouxfTHEbT54RIGoBu/jJuL4o3MnP1j1LcLahelOW2FQLDbbPelWWmLsTbAE3qPUlTOdnhR9htyw5ZbmdJNpeYCClC8XSiIRdHct0pSuCzOYlkntY7pkWyg4oinbtR29DOTmiT5TDYMMXPsp2i6Fihr9VqWIBQN9eQYM36iQTHeS5O5kTBNch3ItSGOb6uECxi6SuuSCXa/mnUa+VHurk2tN43rtUN4CNRqnSW2cGiDNZk54yRBRDMKP//wNkWhYK4E5hXlhPG+g6Q5YecJafl2VK8mRvTpvzVCk9M40rogmH4TfQwVKZ2MwpBiNzKDYQ6kH92TE1GsniNQ6DjEzwn7+Yi5sfylTvRFLJKb0fhpfNzeRdFeMItiXb3FR8SXUZTD7Hsls0NRHN6NqZ+6EALhfClHFgICadSDqBm07OPJKigWMW/A3qGC39lu5wOczMqxglTY+oa+CoSTM2f1h1ttOUEIq/VJFvepUtVlzhW8wDBEQ== 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 Fri 09-08-24 11:30:32, Michal Hocko wrote: > On Thu 08-08-24 20:00:58, Hailong Liu wrote: > > The __vmap_pages_range_noflush() assumes its argument pages** contains > > pages with the same page shift. However, since commit e9c3cda4d86e > > (mm, vmalloc: fix high order __GFP_NOFAIL allocations), if gfp_flags > > includes __GFP_NOFAIL with high order in vm_area_alloc_pages() > > and page allocation failed for high order, the pages** may contain > > two different page shifts (high order and order-0). This could > > lead __vmap_pages_range_noflush() to perform incorrect mappings, > > potentially resulting in memory corruption. > > > > Users might encounter this as follows (vmap_allow_huge = true, 2M is for PMD_SIZE): > > kvmalloc(2M, __GFP_NOFAIL|GFP_X) > > __vmalloc_node_range_noprof(vm_flags=VM_ALLOW_HUGE_VMAP) > > vm_area_alloc_pages(order=9) ---> order-9 allocation failed and fallback to order-0 > > vmap_pages_range() > > vmap_pages_range_noflush() > > __vmap_pages_range_noflush(page_shift = 21) ----> wrong mapping happens > > > > We can remove the fallback code because if a high-order > > allocation fails, __vmalloc_node_range_noprof() will retry with > > order-0. Therefore, it is unnecessary to fallback to order-0 > > here. Therefore, fix this by removing the fallback code. > > > > Fixes: e9c3cda4d86e ("mm, vmalloc: fix high order __GFP_NOFAIL allocations") > > Signed-off-by: Hailong Liu > > Reported-by: Tangquan.Zheng > > Cc: > > CC: Barry Song <21cnbao@gmail.com> > > CC: Baoquan He > > CC: Matthew Wilcox > > --- > > mm/vmalloc.c | 11 ++--------- > > mm/vmalloc.c.rej | 10 ++++++++++ > > What is this? > > > 2 files changed, 12 insertions(+), 9 deletions(-) > > create mode 100644 mm/vmalloc.c.rej > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > index 6b783baf12a1..af2de36549d6 100644 > > --- a/mm/vmalloc.c > > +++ b/mm/vmalloc.c > > @@ -3584,15 +3584,8 @@ vm_area_alloc_pages(gfp_t gfp, int nid, > > page = alloc_pages_noprof(alloc_gfp, order); > > else > > page = alloc_pages_node_noprof(nid, alloc_gfp, order); > > - if (unlikely(!page)) { > > - if (!nofail) > > - break; > > - > > - /* fall back to the zero order allocations */ > > - alloc_gfp |= __GFP_NOFAIL; > > - order = 0; > > - continue; > > - } > > + if (unlikely(!page)) > > + break; > > This just makes the NOFAIL allocation fail. So this is not a correct > fix. OK, I can see a newer version -- Michal Hocko SUSE Labs