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 50C6AC3DA4A for ; Thu, 8 Aug 2024 21:05:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D82066B0095; Thu, 8 Aug 2024 17:05:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D31EB6B0098; Thu, 8 Aug 2024 17:05:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BF9A66B009A; Thu, 8 Aug 2024 17:05:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A0BEB6B0095 for ; Thu, 8 Aug 2024 17:05:19 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5CA6F1C115B for ; Thu, 8 Aug 2024 21:05:19 +0000 (UTC) X-FDA: 82430308758.15.C16E9E0 Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) by imf27.hostedemail.com (Postfix) with ESMTP id 91FEC4001F for ; Thu, 8 Aug 2024 21:05:17 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nIV+Rkno; spf=pass (imf27.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.167.179 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723151108; 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=hiuna0tSCDQBT7Iidr/W4z/hr7onQ/GC0/68Zq0Ogtk=; b=4T3vRM7HzwNRfS4YphJBNz7ubAjcl1/8sWHm2IKrpFrO1oyCAga5J0X9uSQc3z0gB4aJtU sYXTK7ksBP4dvlK2CmylBrOKML+fn2PVBN2aN3Zb0xSUmFj0lOI7O+u5K2LsxDYBRNCw7s 0gxQ7cD33WBrGZ0NCAW4/7WfSMOAQZ8= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nIV+Rkno; spf=pass (imf27.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.167.179 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723151108; a=rsa-sha256; cv=none; b=prmAzjygw3p4XHVjRaJEk6DweC3g0zHMoC4xt/WzExC/wZ9FkOoGug/hHDt7kaybLsIWu/ 5N60uZmeTBu9xB5UOmuQU38OxQOk3GqDeGDBHy5GisI8h3ZGMAUWYk85CKCpEVxWHkZb/J 8yuqw9W9nfeeFHz+3On6a7740CVoQhs= Received: by mail-oi1-f179.google.com with SMTP id 5614622812f47-3db2315d7ceso840192b6e.1 for ; Thu, 08 Aug 2024 14:05:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723151116; x=1723755916; 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=hiuna0tSCDQBT7Iidr/W4z/hr7onQ/GC0/68Zq0Ogtk=; b=nIV+RknoTQJNheJptJScnrcgL2MLVd6RoOsPsUurFUJ8cW0ubnQAbbK7wL+7ZLNXNp 07Qx/HDUZe5cQQ5RcTY0ylr3d2Wvc3PXQ/XAjVfOk5/MGB16qOjWQwrg1DoZ6lSAJipG cOJeMiHAak+HGAe3MKfoMWKpNh5n/g1uWWMO6Pr2jzKVMdr9kEWOCUz19xSQMe0COsUN alg1LQG6yf27HH80nw2sWn7Z2d19oJa8qjwmnDW05bMGmLi9c+vnwaGm4bhap8HuWKzn 9jnft8SRxMiBsNEkARpMZwF9nlvVqKQFzGn+SAjV7beZn6+moKh/tXna/gx4N1r0HpV9 VIsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723151116; x=1723755916; 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=hiuna0tSCDQBT7Iidr/W4z/hr7onQ/GC0/68Zq0Ogtk=; b=jtGCHZUWLNwwnmRKy27mBP/x7DZ1+BbQm1hupc8MjEHbIr5QUgAOA/X/xX65Z8sXDs CkjKjE0POMEaJmr2MHh9WT8vTHRXJAHDVwL1p3Q96hMGoNRlWifcfBt+J1d6uT1HaVFG Tc6RqGBxx0UGnAEvqOINkGZ7uCwp9h8OMW8euZWAzlzr8cbCm5uPI+gpBtKWDlrAEJ5p 6HbM3vgj7xiBZnlinLVS8etvWCtMIu5fan8+/lBEgeXsYwYBvaG7zdxO1aByjFoqE5+0 XfvdK0eJ+N4bhdMBm4anFr0pgHZRE9n8n3zLP2BtFPj1DK99a2EGppXdni0kQmDX+PvC kCnw== X-Forwarded-Encrypted: i=1; AJvYcCWMnMe6GfrowwtYGgiFlyBmr4WyceEWbmcCSD4Ertzc16B1rihG3KavWpGm3tmaxzBmT0kD1atVz93COyqJoGNhkjk= X-Gm-Message-State: AOJu0YwqcIjSBxIx4zK2RFyQ4UCs5kudDKUjhdHJhvIO9cPztvF7C4vk nN/V6UZUaZajjeCU8cI433/41VcDyjPrMSU1c+VHtNTk0KVazW8g5giZfDMlIyDHs5RsN7iVkJN 6SzzWPde7sLYK/IgRBOSePT2BK9g= X-Google-Smtp-Source: AGHT+IH1naOuZoG8Xqc6HAUdtz5PmzN418+Kgpawt6IZkftwIf0pPolI/YMYZpCUzr2EhVq2FcQ0SA4hjYUHvVuUL1Q= X-Received: by 2002:a05:6808:178c:b0:3db:251b:c16 with SMTP id 5614622812f47-3dc3b45fa99mr3744915b6e.42.1723151116528; Thu, 08 Aug 2024 14:05:16 -0700 (PDT) MIME-Version: 1.0 References: <20240808122019.3361-1-hailong.liu@oppo.com> In-Reply-To: <20240808122019.3361-1-hailong.liu@oppo.com> From: Barry Song <21cnbao@gmail.com> Date: Fri, 9 Aug 2024 09:05:05 +1200 Message-ID: Subject: Re: [RESEND PATCH v1] mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 To: Hailong Liu Cc: Andrew Morton , Uladzislau Rezki , Christoph Hellwig , Vlastimil Babka , Michal Hocko , Tangquan Zheng , stable@vger.kernel.org, Baoquan He , Matthew Wilcox , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: k4k4eyxors6qcmxpkau7xq1f856wmoft X-Rspamd-Queue-Id: 91FEC4001F X-Rspamd-Server: rspam11 X-HE-Tag: 1723151117-729216 X-HE-Meta: U2FsdGVkX19LTliiEnoCl8TKmMWY55kgWrF1avWIwDOX75wpbTZyMjavvDuxqspl6Xn4CnIRBQaiFpUkMpTEYxozRJQRnFpHeTA5sre/ojyRJ0+X8SZEELYEXMcfHRaSpHLjGhsdO1tHj1BZNCDhIRFtR1XP7Vnc2PlajahjwVOYUHbkmgcWpjRuuXgBLmtgN5QOwnlnWVr/TJwZv/8X81RdpVt66TcUCHbYF7xpNCS0H+pIXp0XxSM87XNZfvuECF/PPEeOQ8Y/cl3AMVTq6zJcojjvr58cpzrqXzpnpwwPYWo5ZstRMau0ro2aPXR/K8VgbJilDkmhEEdfxojoQ5a3EPy0rrPXMsxjEag8MZELP7AHuuBO+uzL0voMOCIR+1g+kc5uayB7tAyBTKGLmdkQf0ggMJs22Z+pY9aOJLziWhyF1FPJHPhNdmtpQe3ev9I4i5PcWR3i0XstzNTEF4JmTkaegcY748UkhlQwMMfkjDaGb65SEzIA4vQOjVKSDdRf9Fhk/R8I+TiCCwqWJ8uf8r4l9XsUUELtUrLh9CIaLUJZhHdjKx/a9FyO+AsiZvMgFElg+fdk/RtC1k+iCMJI76eIBtQ28amL2e5Yh084AL7o6ZHbpeMXWwEoUFgEGydqX05XN1WNrgqxu1aMGYHT2E8+SnF6p3lj57rCbtUytPhaCinskx56mzjOehy6nC41KRCJIsjC2TjiBmkTxaeet19c1kGGa/GItdEYaVK1G4L9H6DKjeyAwnDbEOkVzLMuDfKVMhGqF+78R9vrDf0OJgtdYRxyZ3rIaozC+JWCO2++h7qNNtNmESh7qLFFoJt1EI7oo91gIBwTTV5oN4gF0CJskxv71MFPz8Nf+PDs70qbTz/KFJRTxG6H1oDNv3SlWZpqw49qvkFRzsJFY+YJp7Azd9vqfv93lxs2ZE2BwK/BEOPUoIZKmkih9dGzy4KxHDXrrtbSxBXjUZH CX3n+8Bo BvSZ9ahpsgHDmc1ng1n7wG8Pgl+r/BwJbdCYsCSkD40RFgPYT9nu/otSG+HawjDuBqDyHfniqFlMzekql0NU24mDa8HxQnzEZ4VGLSMHBfyRsKg3cVn8wtU8b68uCbLXILCZl9+NKl67hl9vBHtww/1blHpYv7rjj8DB5YxmbW0ErIDKnuuLYyktmmDXRNMPpv4CevF1pdoXXfIHjcVOXFu8CjdW+jWbcrf9sklDLgFiV5Z6tHJ1gfX0fsBV5ZLOWzCsGsdRJ3qW/rtzUYZBPjAZ2rL931EZFPOv/Q52UFMJIKEAEbmSY5aHJGGL1ZCEKK3T2q19GDS6rwpDRhXR8jEM3Qa1+NNGGqgBunMauDWceYmj8WSM0p9zOTo7eHUzPIkJP21isb7x0oEZjH0gxhv4n/FZ6Zv31HE+RbUeTQl3d1yp4BLm3b6K0dcANgiSGaFvyztRO0+aNWM9IOb9fHBL6BO+fJQZ36AzdcV25bWCqXAx27qG3ytD1MUfCoR13YOUNBMjM9UaiEIgmkTZtfHaYKGF9n0sROEWxomA2ZCBCyVJ83x3H3tbyGVBrh4nhTYo2 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, Aug 9, 2024 at 12:20=E2=80=AFAM 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 =3D true, 2M is fo= r PMD_SIZE): > kvmalloc(2M, __GFP_NOFAIL|GFP_X) > __vmalloc_node_range_noprof(vm_flags=3DVM_ALLOW_HUGE_VMAP) > vm_area_alloc_pages(order=3D9) ---> order-9 allocation failed and= fallback to order-0 > vmap_pages_range() > vmap_pages_range_noflush() > __vmap_pages_range_noflush(page_shift =3D 21) ----> w= rong 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 allocation= s") > Signed-off-by: Hailong Liu > Reported-by: Tangquan Zheng > Cc: > CC: Barry Song <21cnbao@gmail.com> > CC: Baoquan He > CC: Matthew Wilcox > --- Acked-by: Barry Song because we already have a fallback here: void *__vmalloc_node_range_noprof : fail: if (shift > PAGE_SHIFT) { shift =3D PAGE_SHIFT; align =3D real_align; size =3D real_size; goto again; } > mm/vmalloc.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > 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 =3D alloc_pages_noprof(alloc_gfp, order); > else > page =3D alloc_pages_node_noprof(nid, alloc_gfp, = order); > - if (unlikely(!page)) { > - if (!nofail) > - break; > - > - /* fall back to the zero order allocations */ > - alloc_gfp |=3D __GFP_NOFAIL; > - order =3D 0; > - continue; > - } > + if (unlikely(!page)) > + break; > > /* > * Higher order allocations must be able to be treated as > --- > Sorry for fat fingers. with .rej file. resend this. > > Baoquan suggests set page_shift to 0 if fallback in (2 and concern about > performance of retry with order-0. But IMO with retry, > - Save memory usage if high order allocation failed. > - Keep consistancy with align and page-shift. > - make use of bulk allocator with order-0 > > [2] https://lore.kernel.org/lkml/20240725035318.471-1-hailong.liu@oppo.co= m/ > -- > 2.30.0