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 DAEB7C3DA4A for ; Fri, 9 Aug 2024 09:30:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7024A6B0095; Fri, 9 Aug 2024 05:30:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 664566B0098; Fri, 9 Aug 2024 05:30:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5040B6B009A; Fri, 9 Aug 2024 05:30:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 34A8B6B0095 for ; Fri, 9 Aug 2024 05:30:37 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id D4E681C4137 for ; Fri, 9 Aug 2024 09:30:36 +0000 (UTC) X-FDA: 82432186872.09.09B0C19 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by imf03.hostedemail.com (Postfix) with ESMTP id C53B920038 for ; Fri, 9 Aug 2024 09:30:33 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=ZHnzR46X; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf03.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.42 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723195785; a=rsa-sha256; cv=none; b=WZP46aipfVE4oNge31K9uPhgP+biD5GAXLuk7uVQ8U6vrBwbS2TdmTyBxb9LlMn2A9liFQ p9vMDeOryI5ScQomqxEL6lcgFdYVfG7eLgUp99QeHJbYFIlgtwpniNffr+AZi/LqEwPasB RS+fUFQ9mdFrKixSppi9kFB817OqPRE= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=ZHnzR46X; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf03.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.42 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=1723195785; 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=7d/kZ1LJefavLTlQyNFcMmpoYpJe8zxqltVX08slcKI=; b=ahrt4NZA0G7yYSMUz1E3jMvFKyEhZe/bSLbgr+7V86mujoFNg0wdFFEEoMM9LIptheWy7T 0pmWHx+rufZWLSxCeCOoxclopV9ilRnHh++FCUN7RCtA8E6ICVKciuLSG2+AxdLNkja4v7 PaCN/4CxLMbkw/yjV12eUQUQ7yzdqgo= Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5a10bb7bcd0so2356431a12.3 for ; Fri, 09 Aug 2024 02:30:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1723195832; x=1723800632; 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=7d/kZ1LJefavLTlQyNFcMmpoYpJe8zxqltVX08slcKI=; b=ZHnzR46XyHAamMmFNkf6ym1VWREkfhkp+C2VmfUc6PyU9dQOVnNkxtt6wQI77sCxod WLBmExCCAZXiEReJ+9OT5+DfGSwiWHaA5xdx8VZW+Zvr26GQUJYrqKNbo4xhshJSGbVV 1MqbDSIOJHo8+4DW628Vq3M8Mjl5B+rxD2nwJOosTsmmiUpDRyoM4FkPGC+DIdQcn6t2 b2bXfKa/luExTl7aC2YZ+DKPTGzBaEDz4ydaO+YpbA7+/O3mqpBwp7DXBOH/dFzEtMhq IdueZX2wRO6Yn3jFX+Qn/Ge3K8rrM7WZuR+vRPVc2XCeOIDBbTjKt84krR0yPOylL3WX 3zlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723195832; x=1723800632; 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=7d/kZ1LJefavLTlQyNFcMmpoYpJe8zxqltVX08slcKI=; b=XOrDDdBHnj/io5yTfE/pVNDtfQjqEHULLUgUkCKV2s9CkCDuouwHcpNqaibMQh1LAH OLifRdVoMuu/RS5w7/A1/uHVCF+Vh5dNgQZbuMbSP5kzvT3TfVprglkIf6hJHrvojxv1 Ds3lr88SBjZXRYQgiaW7G0aRQ87PXMS4BD2NOjx0GFzpIyOhmy01KxFpd1A2xiNXWbYh 0enrhTAlDNTyToVkTspPe5QQZI4jCVgaiG8rjc893484f8klQ4PzvBoO1IerNmKj4NQw Q9JxKneSuheEuBw+GR+nvVsxk59lKNhyqmuSseJ2f+ryG6Q+bTE7sJsOpcsK+jGmNwyd DS6Q== X-Forwarded-Encrypted: i=1; AJvYcCU3LJ+RbHxKQW8+wtnTrFxVUmqRIsEylQiHhGcjm4S8rZn5cNdOliEw5dZbb8y/GIFlTqo6eLKlWWGcMB+g9z+7Ovg= X-Gm-Message-State: AOJu0Yxxou90MDmCvFzbMvHkNihlBGdGMO1LTzU4MBP7TrQPb06cqv21 CG9P/OXpApuxvLBkQ6Voqt3cad7vIs4AEVOyP/kJ/Fbn54bfjZ2z0HvE3XbGz+k= X-Google-Smtp-Source: AGHT+IFjC0qy3uP2+neAGLE+UMB33qAmjbX/Sw9++k7wwZlr+KvlaqHUFcj9ClAk+hM2cAgKc+ddNQ== X-Received: by 2002:a05:6402:1913:b0:5b9:df62:15cd with SMTP id 4fb4d7f45d1cf-5bd0a6a554fmr766291a12.32.1723195831962; Fri, 09 Aug 2024 02:30:31 -0700 (PDT) Received: from localhost (109-81-83-166.rct.o2.cz. [109.81.83.166]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5bbb2c1f0b2sm1370175a12.28.2024.08.09.02.30.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Aug 2024 02:30:31 -0700 (PDT) Date: Fri, 9 Aug 2024 11:30:30 +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: <20240808120121.2878-1-hailong.liu@oppo.com> X-Rspamd-Queue-Id: C53B920038 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 4mic6g17fo84qhuh5acq7thaqkqh4d1p X-HE-Tag: 1723195833-705216 X-HE-Meta: U2FsdGVkX18cgoRRi6+k5uniFcJdUlRjwKbvZ3hjQj9Uz+qX0p8fMMUxYxnvvtkhIm4nxtfbxklaBoXq+q8YeJvPMTe5YRNL/yFxCDtV8UVXK3ec27MN1n3dT03uhxkTPT9hZ6PQETWlO3YiZtBO4RvXnVIrRzUB/Sq5yuta8h4nwIrAqsnQV6qXemCYYBF+cAjHSSr44Loiza5l1+Jp9qlcdK606MVQs2nDmAf1ig59OYOaq1vJUMn9z4Jd0iWDebI8Ry6ZcrQUvhUBwqJRUxZ3oldHcJvcY9E8xE6GuGQn1raa53cGs0FT6XMYu9ar45PmfNv4qqs+346Llu5lLgfwN0SKlwtLQBJA5iYy7MErzH0NMOLpoXKuONNubmCFq2VFFW1VIgKSXdL8kyfvqOtn/MEqis5CT1NF/eLfxtoFBYX0szglGDPjCKz9L9ZeDk+TYnoMuSdQNgQeUre3Q6SlqBGIm98ECs5AeIj5k58cgDBuN7LcYYeXHuOoVl8flwyiNYm7gZ58kZzF0B3uN1sP8Jv4mZp3Ofc6nkJMum9Bpd/vyB6vHjPYqYfo8rLkAnjmP4v/JY5OIXCzG1VyiJva+C5MRCzjIhNhdu/jhRu1vw9MbMton2JAtfIUfdOGklks4KnezJi3kRndMYu2do1uqzDr3q4M8XGIcPr0KgFpRPPJdIc6HnqLzsfNSXEvJhTe/lL77KPWNxJG7wXGdi6HutuDMGSuVb+0ePbiEv9d71IJg8zW85C49ClNR0KtkKCqaL92x9NMjOLqfJc2R8QBapA8G+8WB6TxCPzefSrjYM7filUv3HgrePxrMhln4i2VRro7Ktjtq0nykroZZx+PGTShQBfKzjQQgT6X3lXf1hZw5pK4wRElTWxljMyaArOtIjM4XRDzFN/dstfJwo+P1uCq6T12UwQMVMQoeKV6Fxrpmi7Zrk+xceZ36gsftJ0ScfeOyuefnPnigQy qL1aSCFg yA/tX4sFNBe7izTtv5f4wPe62tIJsC9HX3hHX48NDypXUzlB7F3lBrdn/nXxeMF8XLDTROf4k7OTitHCb7+fTO5hqcJ02lVKZOb4rvYSI9KV4AE1hiodfsVEt3Y/yTMsDWKeXePQ6UFAn3KsIpc+cDEiDCXPds0FuL4WGYovs0vHd7msFyUMN32kZu/XZlu/NhklLX4pkx81P9qiqWa09t8+/SxzwunVzyMxSvg/mHs8GKhjB7GgCW15ucX6x2u64Gq6YFDdUKg5rW0yvg8kkLxGqeoN0wQrjNi5y7Jdi3FcWP68B7WvdbFkExQXTB+K1uarA6bN0nO0ECVenm2D0/lc17ZZjkARDefpi5kVFqSyJ4yHJsriXv1WM2U9p6GtEWe/sUonb47DASytyJ6/3dbCbHBpWqHw8PbTU8Ey0pa+dc1To6beXP0rw6Af7BGXRjBet7+TqRhZT/TTVNprYYAdd368XSdfb0uewC/2xd/T1Vm2Hi30XZp6ErY/FtPKsaBr9qhiK0fkKu999yA27pUTTDMkEUlmpGxAUONxJWjwpAjVbgp9YFVylHg== 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 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. > > /* > * Higher order allocations must be able to be treated as -- Michal Hocko SUSE Labs