From patchwork Wed Feb 26 12:16:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13992243 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 08A0BC021B8 for ; Wed, 26 Feb 2025 12:16:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8200128001D; Wed, 26 Feb 2025 07:16:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7CDAC28001B; Wed, 26 Feb 2025 07:16:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 695CF28001D; Wed, 26 Feb 2025 07:16:24 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 48BC928001B for ; Wed, 26 Feb 2025 07:16:24 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 97CAFB6A27 for ; Wed, 26 Feb 2025 12:16:23 +0000 (UTC) X-FDA: 83161993446.04.1F42FEA Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf13.hostedemail.com (Postfix) with ESMTP id C1E9D20008 for ; Wed, 26 Feb 2025 12:16:21 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; spf=pass (imf13.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740572182; 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:references; bh=O6UuU25xVZG3Tpk7SuVNTdhL8F/0xYOnB7rZ0K5ksb0=; b=dLVWX56iF7ArC3INQByacGS9U8pHAAiwjof+SRPzx4rTF9NJXyi873xFhw0bp/ynVxMNoD mDm8Wqm/QHexa88FjhyvuDH6N04msF9X/TdoPJpb9KmouFCyQUnRV21cEc6fSQXP2FXCmX zadBTS3ZIMcVO5kzG+Lw/1L62XviB10= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; spf=pass (imf13.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740572182; a=rsa-sha256; cv=none; b=7Jf8CQKElkQexATjkQdch1rd3BUHEgeiPy/fgE3niTd7t+Ms/2RbyrmAJ6zQT9e4bXZ0tP Q64EK8KfMmCY7CErwbRJpDEPQ9GZYZTUce+slNMwF+JZPrtyx3EZgGST9KqvSD/5zXvJzU w/b1YAh4KYbQSSuNMUVxggRl2WU4pKg= 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 B424F13D5; Wed, 26 Feb 2025 04:16:36 -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 008333F5A1; Wed, 26 Feb 2025 04:16:18 -0800 (PST) From: Ryan Roberts To: Andrew Morton , Uladzislau Rezki , Christoph Hellwig Cc: Ryan Roberts , linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Anshuman Khandual , Catalin Marinas Subject: [PATCH v3] mm: Don't skip arch_sync_kernel_mappings() in error paths Date: Wed, 26 Feb 2025 12:16:09 +0000 Message-ID: <20250226121610.2401743-1-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: C1E9D20008 X-Stat-Signature: h845u5pn69n8j4zg9p936qzymp6og5g6 X-Rspam-User: X-HE-Tag: 1740572181-415737 X-HE-Meta: U2FsdGVkX19EIpIqgD+2EqS515uw2/jWr8MPOnMg74lvJvRBHmMGX2Iyt+OdEk3fsPsfEihSZO/vpYKlnLjAno/t/tgYcuXVZm9kKytai/9hth5XnABOYh4r/RIR/hNjWhJ+JRRf9HpQiyXESvdOTnm0NFLu0aVXN92eB1+QvvlcrPUxeO85y9D6HCQzgJwOkUcobBswsyGrrPr99E0ZGo7+VVtZAFAOtmIDk9Fvl4kVrjXdFr381DY3jvH6F4ifcXvewaMfR62h9tLD+T/JUDdTn8vNjl/56N33JmAcnH/PYFpe42MbVPUjWDkOq68sptZApKUg1F/EFMkfcyWdyBsfaH1BCsYsG8Tpsm4B5OQ9gG0mYrMA4kt3bs0qf5e82yBGA25DhaIgLOdwSiBs2WUtjPgarde1AvxLSCvJEqc/Kw7Ls9YhKghD7ewDF9za/YoasZ7GeSYqcAufq/Yap2+nLwT1kK/OlamarA0g/wmwEeZ4gHq/VPHM7GguBiw1h7TRvdUsp+Hl8gp280T22d8ZRQOmMiFy827Cg0NUJYqezGg2GcRi/cfhghO8rQfRgiEQmrjkb4qRqUixvEgLJQPp9LioH6Oo6OlhE6x0VtwWlHjfB82DsvgL7tl8R4IMQicW+X75ggXjumvLb9fi5a/mUzF2qvGMaHDSFTfMRGK+6PyeaUt4+k28zYMoE4lXrFKBDCW8bcFPqyqIlGTgtWv+xqtNmUSgXgmdV1nOQ8/P+OuPkJN4nejYrZYr693ZHe1lR0oyf3DTFxEoRPLE6nmLmkmXBRq98nJvZt/Ex+yVJ0F7QpTYy473NXWSYpM/kwOXDjX50FJp4MFqnmrv/NkmlZaQBBPUh5LYwSGF88Y6Y1hGhTemPb1KFTvUae1aRuBfV3rh2PzDDXhqUG4VsDyQPrpyPWOMu2EmqwurkLz1jHhziAP/3AdbSOx6zRd14y1GMHpSVsTOy1GfFdD z0Mnxrb4 NI3If2uJqxbx6PDlhMKbfx5ytipO35+5ZJDXVDCpTE4SCvdTM8f3braBjts/OsBj5wvAsyQDGKEZX03TpCf+sPO+HiIgd+AJE31hPUJoIWfaCI1OvMCCyVO/7mfP8W7XG20j6QZn6SS8yg0l4I1PT31/qkYerFgAXkagSFfQKBUvoglKc1OfTwDaYFGTyUzoZNj6ZqYlmvbhTUO439yEJaCFQaL+65Y4Ft+P9 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 Reviewed-by: Catalin Marinas Signed-off-by: Ryan Roberts --- Hi All, This patch was originally tacked onto the series at [1]. But things have changed a bit and this is no longer a dependency. So I've decoupled it and now prefer this to go via mm. Thanks, Ryan mm/memory.c | 6 ++++-- mm/vmalloc.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) -- 2.43.0 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; } /*