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 7DF04C5AD49 for ; Fri, 30 May 2025 14:05:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA0526B0129; Fri, 30 May 2025 10:05:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A4FB06B012A; Fri, 30 May 2025 10:05:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 940266B012B; Fri, 30 May 2025 10:05:13 -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 764C26B0129 for ; Fri, 30 May 2025 10:05:13 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id F40461D4074 for ; Fri, 30 May 2025 14:05:12 +0000 (UTC) X-FDA: 83499746064.07.6FF0969 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf05.hostedemail.com (Postfix) with ESMTP id 11B3B100020 for ; Fri, 30 May 2025 14:05:10 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf05.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748613911; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XjhsWzhDn2/IdvEGoCA1LXmpq5wNTlbc1U/aO2JV9HA=; b=4rimRAN6/PNlCHnWsmDpWhRxVOz3HutCKc4QnAWAmb//fUXdx506RhamPcJ6q39xppVe0f nk4SbwF+D+3KBswcZKYHwQK6IYSL5ivNFC7//jDEyV1wnGeGCqslkKfv9SlbWr/jhyMRoX OVpdkCXVgWuFshdU/7DmwrZwqSvMu8E= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf05.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748613911; a=rsa-sha256; cv=none; b=WGa8jvvGS2WOntTNoARF06yL8De+4Z4z7TO2be9ZFPZR+WN2WdV0lQPytpmkRihfrN7Yx+ zHzuXgFwrRh7lg9ak62BK7Y4IFjrgOVO4vmVLbJnW7IeN5/AHL08lUUeV/PMdvvdJHyHye Rni8228H1CAiFHuhFU/oPwqPkkQBXGk= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C1E0E16F8; Fri, 30 May 2025 07:04:53 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3973B3F673; Fri, 30 May 2025 07:05:05 -0700 (PDT) From: Ryan Roberts To: Catalin Marinas , Will Deacon , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , "David S. Miller" , Andreas Larsson , Juergen Gross , Ajay Kaher , Alexey Makhalov , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Boris Ostrovsky , "Aneesh Kumar K.V" , Andrew Morton , Peter Zijlstra , Arnd Bergmann , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Alexei Starovoitov , Andrey Ryabinin Cc: Ryan Roberts , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org, virtualization@lists.linux.dev, xen-devel@lists.xenproject.org, linux-mm@kvack.org Subject: [RFC PATCH v1 1/6] fs/proc/task_mmu: Fix pte update and tlb maintenance ordering in pagemap_scan_pmd_entry() Date: Fri, 30 May 2025 15:04:39 +0100 Message-ID: <20250530140446.2387131-2-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250530140446.2387131-1-ryan.roberts@arm.com> References: <20250530140446.2387131-1-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 11B3B100020 X-Stat-Signature: szt7drn3b66ywsybxc9fb7p5ww9qrps3 X-Rspam-User: X-HE-Tag: 1748613910-934694 X-HE-Meta: U2FsdGVkX1/l6PARSGoATrXtHF2jJcVZeS1cQKtzQcLjj5f57RKsmQC8pp2sXophdpMHcSNx8s6S1faWgo27G9ZdbFZ91Px1UtIvTPEPyS6BCXkHXld7G0PjNuTifG4iF51Kjm34Yq99A7VW18QfnToxsraKLo+N+jNCzWtTp0Gv5fxbc9ghpSRPn+ff3DtrB6P+hDwy2KfyM9X9xfVkF5V8Ohu6JFE/EmLBWIfsfHfsNrNBx17sfJeLa/3J2GxgECGYjIAlt/wthHyNd0RyftBBLnB8c+w10rvpg4VwGTib/uXGIS8kvvZ8F2OFnlFpHbKL0Ie4vhzO3xlVWRK9ftSHvLKGuyKfBmkV/QDsX3PaHqqk/eG4HqBOl13jlTrYlJFJyU3VShxqGIObolnXYjCtCxUomopPP0LmFVqmwO1Vbm9lBesrOf8CykwCxIYDArhz4bF/uKEjOGLcHyt5Pm+gzUyQC4sZrg+PX1GFhNF0qtk6S+M6DkmAONJUe8X5J37JbKE3AwM3kHUcZqdy0TM1YiGYdbNCCOIveImZeXPl314iOFeWjKnPrDRi/Hp64gmdOvYWsurHVRfaiIdFSXW9C1iWhfpMNt4IUR6klH9IjHQER6Y+DtTqYobFcvXtaeWhw61psSB2Wa3Yg+hKT1tn7MQfDfc11nycHT5BzPMkzCAxy2CcnHgrW6Wxokziaarh3DFpxZJol1hD5MtWDGvItR89gyZq7VP/G/jW+t49xzgwZIL7lbzK9kD07l81dlM7WjzuryworKCtTual7ehmCKHAr1Gl+8uPK+rPYr9pF8/cuOyiPQNPaYeUhmTmMEHAhTi2WkAHWSK8iZLzhidAqC6K6jUX0n497ZFkcgioxZmsZv4Y0NkpLeQSb44eXk+aRqp1P0r6JcgHz75365joQUmY/ODt47xz8h30SCOiDCvqkDLp5AV50DKUbJPu1GH1RrtU3BXTp7hVWxC U5Sqdw+E JwB2kGgQYKhqUCIW0MxAIyeHwZ6rw35lHymNi+9G69RNTDSmrOAO8ZQMZBOyxf+yQ3MhcOM5IHX3QgpeIwS7IqaByWohX3V0Hz7l1zaJOVIfmEanqnkqNoYUN23Zm8V5Y1XTsHn75PuZXioU7R31OLIAATiLIaKAVjy1TfT3o9fIQ49KU4AjOOSv6tpU/OcxJWWdXx4t4wP2MEQbm7LCNtqElEyHf4D6J3lF7cp82Iu2We357GNWHySFnEbh9pRCT7Tatlkaif5EJEJ6ydMyBJv6RHg== 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: pagemap_scan_pmd_entry() was previously modifying ptes while in lazy mmu mode, then performing tlb maintenance for the modified ptes, then leaving lazy mmu mode. But any pte modifications during lazy mmu mode may be deferred until arch_leave_lazy_mmu_mode(), inverting the required ordering between pte modificaiton and tlb maintenance. Let's fix that by leaving mmu mode, forcing all the pte updates to be actioned, before doing the tlb maintenance. This is a theorectical bug discovered during code review. Fixes: 52526ca7fdb9 ("fs/proc/task_mmu: implement IOCTL to get and optionally clear info about PTEs") Signed-off-by: Ryan Roberts --- fs/proc/task_mmu.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 994cde10e3f4..361f3ffd9a0c 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -2557,10 +2557,9 @@ static int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start, } flush_and_return: + arch_leave_lazy_mmu_mode(); if (flush_end) flush_tlb_range(vma, start, addr); - - arch_leave_lazy_mmu_mode(); pte_unmap_unlock(start_pte, ptl); cond_resched(); -- 2.43.0