From nobody Sat Nov 1 07:25:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1743153255304542.5456220964578; Fri, 28 Mar 2025 02:14:15 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.930366.1333031 (Exim 4.92) (envelope-from ) id 1ty5mn-0002Cp-9A; Fri, 28 Mar 2025 09:13:57 +0000 Received: by outflank-mailman (output) from mailman id 930366.1333031; Fri, 28 Mar 2025 09:13:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ty5mn-0002CA-0n; Fri, 28 Mar 2025 09:13:57 +0000 Received: by outflank-mailman (input) for mailman id 930366; Fri, 28 Mar 2025 09:13:55 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ty5ml-0001o1-54 for xen-devel@lists.xenproject.org; Fri, 28 Mar 2025 09:13:55 +0000 Received: from li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com (unknown [2a02:8070:a484:e780::f9cd]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id f6e79d94-0bb4-11f0-9ffa-bf95429c2676; Fri, 28 Mar 2025 10:13:52 +0100 (CET) Received: from agordeev by li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com with local (Exim 4.98.1) (envelope-from ) id 1ty5mY-00000001t9o-1wfb; Fri, 28 Mar 2025 10:13:42 +0100 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list X-Inumbo-ID: f6e79d94-0bb4-11f0-9ffa-bf95429c2676 From: Alexander Gordeev To: Andrey Ryabinin , Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kasan-dev@googlegroups.com, sparclinux@vger.kernel.org, xen-devel@lists.xenproject.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, Hugh Dickins , Nicholas Piggin , Guenter Roeck , Juergen Gross , Jeremy Fitzhardinge Subject: [PATCH 3/4] mm: Cleanup apply_to_pte_range() routine Date: Fri, 28 Mar 2025 10:13:41 +0100 Message-ID: <6a4580bd289b4c62b09f8ef656d242c027c0c866.1743079720.git.agordeev@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: Alexander Gordeev X-ZM-MESSAGEID: 1743153258095019100 Content-Type: text/plain; charset="utf-8" Reverse 'create' vs 'mm =3D=3D &init_mm' conditions and move page table mask modification out of the atomic context. Signed-off-by: Alexander Gordeev --- mm/memory.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index fb7b8dc75167..00f253404db5 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2884,24 +2884,28 @@ static int apply_to_pte_range(struct mm_struct *mm,= pmd_t *pmd, pte_fn_t fn, void *data, bool create, pgtbl_mod_mask *mask) { + int err =3D create ? -ENOMEM : -EINVAL; pte_t *pte, *mapped_pte; - int err =3D 0; spinlock_t *ptl; =20 - if (create) { - mapped_pte =3D pte =3D (mm =3D=3D &init_mm) ? - pte_alloc_kernel_track(pmd, addr, mask) : - pte_alloc_map_lock(mm, pmd, addr, &ptl); + if (mm =3D=3D &init_mm) { + if (create) + pte =3D pte_alloc_kernel_track(pmd, addr, mask); + else + pte =3D pte_offset_kernel(pmd, addr); if (!pte) - return -ENOMEM; + return err; } else { - mapped_pte =3D pte =3D (mm =3D=3D &init_mm) ? - pte_offset_kernel(pmd, addr) : - pte_offset_map_lock(mm, pmd, addr, &ptl); + if (create) + pte =3D pte_alloc_map_lock(mm, pmd, addr, &ptl); + else + pte =3D pte_offset_map_lock(mm, pmd, addr, &ptl); if (!pte) - return -EINVAL; + return err; + mapped_pte =3D pte; } =20 + err =3D 0; arch_enter_lazy_mmu_mode(); =20 if (fn) { @@ -2913,12 +2917,14 @@ static int apply_to_pte_range(struct mm_struct *mm,= pmd_t *pmd, } } while (addr +=3D PAGE_SIZE, addr !=3D end); } - *mask |=3D PGTBL_PTE_MODIFIED; =20 arch_leave_lazy_mmu_mode(); =20 if (mm !=3D &init_mm) pte_unmap_unlock(mapped_pte, ptl); + + *mask |=3D PGTBL_PTE_MODIFIED; + return err; } =20 --=20 2.45.2