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 42415D15D85 for ; Mon, 21 Oct 2024 12:23:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 962036B007B; Mon, 21 Oct 2024 08:23:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8EB3F6B0082; Mon, 21 Oct 2024 08:23:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 764546B0083; Mon, 21 Oct 2024 08:23:42 -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 575BA6B007B for ; Mon, 21 Oct 2024 08:23:42 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 3455A1208BE for ; Mon, 21 Oct 2024 12:23:28 +0000 (UTC) X-FDA: 82697524938.25.04526A9 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf20.hostedemail.com (Postfix) with ESMTP id AF1571C0012 for ; Mon, 21 Oct 2024 12:23:20 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=B0l0fHiy; spf=pass (imf20.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729513268; 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=uFXJPA42Z4FvckVpfiQrwGifFsYvWjPgRdkDsfHcBUA=; b=pDdhJcUXa20ZkJRJc0Fqt6jxfV+wijyJqYv4vPtsNk9/BA1gFEBG4zVA5oSbmTzyQoKjoR +wzBrqv0S6treeCVnqCRHay9UZkAAbZqokCm6HUhoRBfd+PFzPE4Q/i+HdsryX9/5HlGgW vs9VNwO0PHLt9YodYS16gAM3aEIcJVc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729513268; a=rsa-sha256; cv=none; b=67Ard0bYOaATuOcOf+a8w+i7p5OuasJlj7Vz6OnZYKH9/atXGvTSWA8slXaXCc2RwkytbX 3+NaNgGFQ6jJEfhD9gRxPpF+mVkogoMlNVvIQg+kLf1YIFPBnJ6EYp07nZGdM52K8rn+J7 dSfkawiqxRD6Qj79D1X+sloVF7x++2o= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=B0l0fHiy; spf=pass (imf20.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1729513418; h=from:from: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; bh=uFXJPA42Z4FvckVpfiQrwGifFsYvWjPgRdkDsfHcBUA=; b=B0l0fHiyi36QgeGCzcF7rr8eApt6fO0VXpaqSCIR+EnT0KujGP+ybJYA2XzRwosDBNLOt8 efRp28X5xgpElzDdutYbb9XNLQgGjZgIABMuw/a3zRtTvMcnJJZzZdbnFFrMRdydGsMNVR zr3UYaeZhviMU1f2dwDFe+0R7v9xeVk= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-466-6rkV-Q-zNlOwWgRRFtOUpg-1; Mon, 21 Oct 2024 08:23:34 -0400 X-MC-Unique: 6rkV-Q-zNlOwWgRRFtOUpg-1 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-43164f21063so19914515e9.2 for ; Mon, 21 Oct 2024 05:23:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729513414; x=1730118214; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=uFXJPA42Z4FvckVpfiQrwGifFsYvWjPgRdkDsfHcBUA=; b=eC7G4lsXDaCS9elnfBnSGwDQIjhaSCfP/I2qkTug+4vVgQpCjcLflElxR0jAQEZaOz 9vbsQEwzJA9NANiFj1OgjebwBiCvy2zqEHRgRUG+I5HgBqSiCDvnkzJoUrLnirHTkfmn 3vrpW0vFDoldL0D0YLZ1lCuV4Fk9qmvMptzh0oRbeZsLu/zuS2vb83hiZByohbTqpMoe izj+JMnO4fvGEJmtu/LkgEMM3hhBxcM2ExBNUUuiISMttrtHiv35+m9kfsAjXAHo4EVR jIyQv1EVw/2eEWi+23Sr9+wZ83PjLeGKFUdWR6VPiRn09SDUHdVQBuzVGA7sA7DzG2Kv 1ZgQ== X-Forwarded-Encrypted: i=1; AJvYcCVcQk62VZtWia1ENfUKzv88CC7FmNQ+YozmTiAX7/+wDD64i/mPYgUTxJklBw5zuLx5EnjVmc7/jA==@kvack.org X-Gm-Message-State: AOJu0Yy46UupYK1+mcuZ4jCBobJqGXJC09AUoOTYJxPs9x5ZJH9raylu l6V/ZZ8EdaqRM2fkC31u/9ldEpgy/x+H2+DBiUcsEGO1h5iqTzeCD6XMsWfxw5VN4Biq011sdtN GZg539URojgdaUyQ1nePEAHaITl3SHwXmxTupkOMKFRp0igj2 X-Received: by 2002:a05:600c:1547:b0:42c:b80e:5e50 with SMTP id 5b1f17b1804b1-431615bf97dmr90972275e9.0.1729513413625; Mon, 21 Oct 2024 05:23:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEXq14rjOzZqkZ2LLBYAJkh/Z9QyHz8AiwWS/xKGGmWoTb0OdLBygpyTri0cFef6ZUQDR+yOA== X-Received: by 2002:a05:600c:1547:b0:42c:b80e:5e50 with SMTP id 5b1f17b1804b1-431615bf97dmr90972045e9.0.1729513413260; Mon, 21 Oct 2024 05:23:33 -0700 (PDT) Received: from ?IPV6:2a09:80c0:192:0:36d3:2b96:a142:a05b? ([2a09:80c0:192:0:36d3:2b96:a142:a05b]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4316f57fbe8sm55532975e9.18.2024.10.21.05.23.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 21 Oct 2024 05:23:32 -0700 (PDT) Message-ID: Date: Mon, 21 Oct 2024 14:23:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm: avoid zeroing user movable page twice with init_on_alloc=1 To: Zi Yan , linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , Miaohe Lin , Kefeng Wang , John Hubbard , "Huang, Ying" , Ryan Roberts , Alexander Potapenko , Kees Cook , linux-kernel@vger.kernel.org References: <20241011150304.709590-1-ziy@nvidia.com> From: David Hildenbrand In-Reply-To: <20241011150304.709590-1-ziy@nvidia.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Stat-Signature: 83yexinnjxfwsfx65wxsf3rzukj7z9n7 X-Rspamd-Queue-Id: AF1571C0012 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1729513400-775600 X-HE-Meta: U2FsdGVkX1/MOb4yB9Kt6a6gLOEh5bSQrkIAr3qOZT3N7KgjtLiJNMPB362egBraoMigMghczTWiWN9CHIeQlVszAAgDlZ1OQCT3reKKW6ZiH3iVqsiCuL2Jh40eCFlKQWSrsEbXUMNK4w7/sov65XgeS/VJydFCpHV9b9DxAcOQ4oX95vfJMMGhsaECOgkJiMWPdxe+Uur0zrl3qC03oR7B6VeP9sMJ7+QFp8Yaza6/+RAS9dlyq0SjzRsxEXpd+9VjE3L0Vwq/WPFyrucbfVT81zgC6sGE3hDBY3PKZiKx9RIg3rTJjxZ0ugxzKRIBgGL7zzjEo90M680D6aB76YtG0b3wyh8PtKYQr75INwoFSPiJUxz8abuVINoem3NNsIjZDNsqVkVCoPbojnaLYSzpZsxD3j9dseRHNZmTyNKLHBGEoe7U3zNeEYashrQ257/b78DH+k5RB0O5nHojgXIbjbCAKMB356g6F7WQDjjI6VqASIgubRJONnDhhouIX2zcyPIZ8VzGGhUK2qKavqXpY6zpEaWYegZrni/k7LqIqScRvSSosDczApqHljFF3agFaHUFCSlV6c02hZ/uuNAk0WwxjVphQm5vcAmzwhLMBUpwXELbVToGOGv+dbReHxMlb9jHKiTyjyRztDDEiambJP62iGsuE2MhMK1x79o7SwiiuCwhpbQPXXAFNNRaHSNNhyBd5v9LgvOueehG3M+OOij7mUeMQykTEZ9THqOdyRriEPFhFT6KvdON2n/JTaiEJ99v67ImKqWt4LhqbbiJrtJyUzbRhNTZFc9eAmBny71XX8n9wiGJmDa2waViJwiou8fqnglerRIYUiu7KECCYna/hM3O0aeXqD5B6nM4Kizw1NpPYFFYXeghyAkcYvks5XN8OEYWeYV4sTy021arepn187Ky4kcSK3jQJtN0tt4pK0isDgmYbIyjfzRriExxbFNgTkcWm+OJXt4 FKbXpAM5 m1+h+o8kzS4JYDxbRhXYtkb+8EL5SEDorE2XH9g8TtGLugBIAh1Na6k+L6fiK3QT7SLCLNXYPLBe1sBXdtr08BOv/kuHBtS0gxWeyMwUNPK/BumKhJjsm5GGjLDGGdqV4I+a3YyOxnEUOOKHYbLN2+JO4X6CBCv+whBoqglk0LAMQ1jvAOa+JAIM3q4qGKDhgtJ3Oi60ZOJ3ZQEl+fZ63xWAwcDoXkjiI999j1wtU7AjXliwIciQNBDqSVmGoa4LrJL11oHJSCtjOlerMxm4nZIc8K7pR7qEoJHQoBvgRhh8QoV0u5B1Vn25za4IwM3UY6XuOKHu1eMreHF8rpmjmzauxKM8OUUl/bJ0wWb+D54xTNKvC9LAo4p65W+aWIwbhwuRvb7TTJdFj56b7VeXSY1iAhKAYSZRNB01PV1CVIF4cxkhhtSK5Cwzvk+RSrV/J5OoU3h7U9UvRTwvBH48og803LpUcY5y2CxyxFUlRuRqwObQ= 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: Am 11.10.24 um 17:03 schrieb Zi Yan: > Commit 6471384af2a6 ("mm: security: introduce init_on_alloc=1 and > init_on_free=1 boot options") forces allocated page to be zeroed in > post_alloc_hook() when init_on_alloc=1. > > For order-0 folios, if arch does not define > vma_alloc_zeroed_movable_folio(), the default implementation again zeros > the page return from the buddy allocator. So the page is zeroed twice. > Fix it by passing __GFP_ZERO instead to avoid double page zeroing. > At the moment, s390,arm64,x86,alpha,m68k are not impacted since they > define their own vma_alloc_zeroed_movable_folio(). > > For >0 order folios (mTHP and PMD THP), folio_zero_user() is called to > zero the folio again. Fix it by calling folio_zero_user() only if > init_on_alloc is set. All arch are impacted. > > Added alloc_zeroed() helper to encapsulate the init_on_alloc check. > > Signed-off-by: Zi Yan > --- > include/linux/highmem.h | 8 +------- > mm/huge_memory.c | 3 ++- > mm/internal.h | 6 ++++++ > mm/memory.c | 3 ++- > 4 files changed, 11 insertions(+), 9 deletions(-) > > diff --git a/include/linux/highmem.h b/include/linux/highmem.h > index bec9bd715acf..6e452bd8e7e3 100644 > --- a/include/linux/highmem.h > +++ b/include/linux/highmem.h > @@ -224,13 +224,7 @@ static inline > struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma, > unsigned long vaddr) > { > - struct folio *folio; > - > - folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vaddr); > - if (folio) > - clear_user_highpage(&folio->page, vaddr); > - > - return folio; > + return vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr); > } > #endif > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 82f464865570..5dcbea96edb7 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -1176,7 +1176,8 @@ static struct folio *vma_alloc_anon_folio_pmd(struct vm_area_struct *vma, > } > folio_throttle_swaprate(folio, gfp); > > - folio_zero_user(folio, addr); > + if (!alloc_zeroed()) > + folio_zero_user(folio, addr); It might be reasonable to spell out why we are not using GFP_ZERO somewhere, something like /* * We are not using __GFP_ZERO because folio_zero_user() will make sure that the * page corresponding to the faulting address will be hot in the cache. */ Sth. like that maybe. Acked-by: David Hildenbrand -- Cheers, David / dhildenb