From patchwork Mon Feb 17 14:04:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13977898 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 03BB3C021AA for ; Mon, 17 Feb 2025 14:05:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6C48B280056; Mon, 17 Feb 2025 09:05:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 673FE28004D; Mon, 17 Feb 2025 09:05:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4ECC3280056; Mon, 17 Feb 2025 09:05:00 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 311E028004D for ; Mon, 17 Feb 2025 09:05:00 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E5080120474 for ; Mon, 17 Feb 2025 14:04:59 +0000 (UTC) X-FDA: 83129607918.08.AC3C644 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf08.hostedemail.com (Postfix) with ESMTP id 310AA160011 for ; Mon, 17 Feb 2025 14:04:57 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf08.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=1739801098; 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=c3wy/Ge3n3KdfGqL4IOjId92Wi3FclaJmBP0NTUpOeU=; b=pMKNfVSp4VHVZT1MpVk0urEISzD2TuDFiIKZ0sBWws/K119MrcZaqM4VRGtk/cvFj3XmBA jqQFgLaY81sNMk388YNZJ0Tym8Rc56E4oxMivlsLu1dk2B9TfAg9CtcdPGB4b34Ke03yoh 1krdfGl8XV6o8B1snKaaoWA8lJTQb9M= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf08.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=1739801098; a=rsa-sha256; cv=none; b=4CNIaPiRsqcwPZWO1TPq9wUcn3HhNS5YUyMcTyZqUrha78fGcYsXYfpDwDxHVTl0zZqn7J ZWQUO/TbkuENSE8b7c+nlWEHKbq69Pt6K/kWS13BxGKVoOGOg8QaZo0g/AHJ7LjRsogycU r7x6WxSf8gLaAc7sGvCg4Wg5UeDXGGs= 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 9D924176C; Mon, 17 Feb 2025 06:05:16 -0800 (PST) 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 288023F6A8; Mon, 17 Feb 2025 06:04:52 -0800 (PST) From: Ryan Roberts To: Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Paul Walmsley , Palmer Dabbelt , Albert Ou , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , Gerald Schaefer , "David S. Miller" , Andreas Larsson , Arnd Bergmann , Muchun Song , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , David Hildenbrand , "Matthew Wilcox (Oracle)" , Mark Rutland , Anshuman Khandual , Dev Jain , Kevin Brodsky , Alexandre Ghiti Cc: Ryan Roberts , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2 4/4] mm: Don't skip arch_sync_kernel_mappings() in error paths Date: Mon, 17 Feb 2025 14:04:17 +0000 Message-ID: <20250217140419.1702389-5-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250217140419.1702389-1-ryan.roberts@arm.com> References: <20250217140419.1702389-1-ryan.roberts@arm.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 310AA160011 X-Stat-Signature: 58y8x4i8mynfoo8hba1ne3brjqbxce54 X-HE-Tag: 1739801097-728004 X-HE-Meta: U2FsdGVkX1/95xQOwi0SxAUPJoq++Db2ajBxCZUG+Ni0AEN8c8iaZD82cj4YtIEaJE15zKCz3AMA9wf0G+gh2O/BBmmBAcuNLwgAWF08byd5l/VcimtQKihUOECohfPJp0j4IcnL7yh/pXh2k2Ad+kx8HbmOjYizQmAscg9P2JJTLzMRjNLCjJz4V6II0ay54XEZULA/nGdeK4QUP0K6FbVy7d5Qoyv+opLgTg2rjJxXCQJUwTeo3bc02oIrPnlzNHaqLQDfLdYByplsvV/BfdtT5CJyoF4FBNmXDHg0/h8hdMBQ1ywd9+GraJRf7y1XHlR5Ybe6rA16gnfknbn2YGOfHUWz15zWsBT489pacdbX4EY80Enw2QA+ibhMr/ohSk8MvS4hRU0EFjqIQA3TlYQqBuFkhDfZy3wmV7EQC2DLQGqduQNGlivBTTJbTVLrFOBCG4WAG1dMs8byL239rW4LWDLoF7I+bXeBlGvKIlwLT+z9noNWcZeYfzO/At0jheSPKOW7GjfVTfPfj4Bq8xK3/XgYF6f6YTLgJrrTCU9Dsqa+e7RDowlCU1VX97LQepAjq7LvqSCcNX/eUgXD0fAFKgHKCGycGtp188NBrJxmJP9t0csN2KB9Cym4QQV4+74u8yZ9FqpRzFw/FPtStQEo6f5WTUftpiwd5sPn+aVxf/Ac935KLQ20iUeHs2wVgPbfRFbNUxJAvBfqb9GGyxt5X3kfkswBXAg5u9qvz/zS6MS+vHIHmTlAt3QCxoeznpK/PDxa7X+9joE1uYL181JVhlSLbP608XecuXdZy1NC3oQ80FFkbQG3Yjf31GoIBVipKuImXPg4puiY/AemjM83L5+Rvu+rLju4zAWrJMG+58DXu0GLkaLQcoGbA6trELgShXTHDvkjJmFDBU6dU1AWSp2f3gR2DIa1M1KNeZXP8jOJO8nQD5JqpiXWAmOGxiUPB4qKUihLrF2pCZC PAGRgb6c XCNqRWjg/w3i9g2PpRZL1AIWqCjvJnpY9IyYUkk1wyr376Enj3EXlyGroQJWKJKdsGQNDTumgyGEwXwMdDKiNPrxsrRo2yU8iD/gv+DW6teDmWw/5+2SWgAParrl9DbSD0ypbpsK7wWDgTWO9N1WE/Pf5hDv05mYOZKcaBx4njOAxnGIBdzLh0Ha8pPqmL8pH3lJC3MKi26S9TCWc9QXuWeKLuSWYRirpsZK0 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: Fix callers that previously skipped calling arch_sync_kernel_mappings() if an error occurred during a pgtable update. The call is still required to sync any pgtable updates that may have occurred prior to hitting the error condition. These are theoretical bugs discovered during code review. Cc: stable@vger.kernel.org Fixes: 2ba3e6947aed ("mm/vmalloc: track which page-table levels were modified") Fixes: 0c95cba49255 ("mm: apply_to_pte_range warn and fail if a large pte is encountered") Reviewed-by: Anshuman Khandual Signed-off-by: Ryan Roberts Reviewed-by: Catalin Marinas --- mm/memory.c | 6 ++++-- mm/vmalloc.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 539c0f7c6d54..a15f7dd500ea 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3040,8 +3040,10 @@ static int __apply_to_page_range(struct mm_struct *mm, unsigned long addr, next = pgd_addr_end(addr, end); if (pgd_none(*pgd) && !create) continue; - if (WARN_ON_ONCE(pgd_leaf(*pgd))) - return -EINVAL; + if (WARN_ON_ONCE(pgd_leaf(*pgd))) { + err = -EINVAL; + break; + } if (!pgd_none(*pgd) && WARN_ON_ONCE(pgd_bad(*pgd))) { if (!create) continue; diff --git a/mm/vmalloc.c b/mm/vmalloc.c index a6e7acebe9ad..61981ee1c9d2 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -586,13 +586,13 @@ static int vmap_small_pages_range_noflush(unsigned long addr, unsigned long end, mask |= PGTBL_PGD_MODIFIED; err = vmap_pages_p4d_range(pgd, addr, next, prot, pages, &nr, &mask); if (err) - return err; + break; } while (pgd++, addr = next, addr != end); if (mask & ARCH_PAGE_TABLE_SYNC_MASK) arch_sync_kernel_mappings(start, end); - return 0; + return err; } /*