From patchwork Wed Feb 5 15:09:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13961291 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 4E3B4C02194 for ; Wed, 5 Feb 2025 15:11:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 838A5280022; Wed, 5 Feb 2025 10:11:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7E790280013; Wed, 5 Feb 2025 10:11:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 663FA280022; Wed, 5 Feb 2025 10:11:07 -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 1E232280013 for ; Wed, 5 Feb 2025 10:11:07 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 8C6C01601F7 for ; Wed, 5 Feb 2025 15:11:06 +0000 (UTC) X-FDA: 83086228932.19.9C22CFD Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf19.hostedemail.com (Postfix) with ESMTP id 8EB611A0003 for ; Wed, 5 Feb 2025 15:11:04 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.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=1738768264; 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=z0b/vAo1dYDk99lppFjqh4NoEmfrtaCmuAHpymYcqN0=; b=sjq6Ic9qj3liBNIb19WGAON7agVDudr5B5gTNdz3dob7i6SKwKJunvD3zjW6GuI8CUIlbD 2qMdY6QpOviP+K1aGnKMy8/PGOgG4OJ028dR9UcRjIjuqFFNuXWtJ/QR3AglOXxlzeKL0A 9n8ubkE/TDodPLo8zhpCLcBRs0ZjeR4= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; spf=pass (imf19.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=1738768264; a=rsa-sha256; cv=none; b=aq/KqubU/vShTNRjKW908P/kWoCG2eg9rPzuGPMZmvN+Es1GeQgz0m+jFNlMtHAmMztXvA 5/TVXA9u43PNgIyL1VtT7MYipSPRGXrW8+ayhQtTXtupSaJxb+zigqwTglx/VAzs88PwY1 f42eJxri4IeMKmYULbPptjT04mjZ0r0= 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 7589B1063; Wed, 5 Feb 2025 07:11:27 -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 3AC763F5A1; Wed, 5 Feb 2025 07:11:01 -0800 (PST) From: Ryan Roberts To: Catalin Marinas , Will Deacon , Muchun Song , Pasha Tatashin , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , Mark Rutland , Ard Biesheuvel , Anshuman Khandual , Dev Jain , Alexandre Ghiti , Steve Capper , Kevin Brodsky Cc: Ryan Roberts , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v1 13/16] mm: Don't skip arch_sync_kernel_mappings() in error paths Date: Wed, 5 Feb 2025 15:09:53 +0000 Message-ID: <20250205151003.88959-14-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250205151003.88959-1-ryan.roberts@arm.com> References: <20250205151003.88959-1-ryan.roberts@arm.com> MIME-Version: 1.0 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 8EB611A0003 X-Stat-Signature: k584udtskkdks9ysgum47fajushx9hwh X-Rspam-User: X-HE-Tag: 1738768264-857158 X-HE-Meta: U2FsdGVkX1+1z1CVEDGJCRiuTSmBseQT29I0FiVdLFAe4gWivuZcyJQZ2KaayLXzfF0YD3tMESdebAIsOLsE47SyCiZ7DPZDEbh3HG+Tl7+p1/bCIMSVGreLFo3ZIUirgiVZ+1CiKko5YIx8wvL+SCovL8EGsh6IIsl+9AFfQiCM9AP3jFGfzG8ybRIVRFlp5aJrVTHH/75Z0h01dpYrZwYVnRPq8vnwm1uupCIVvZtxtwxu1GWYNByQVBUaqCz70a6+I6vmQNSSqPx3c9BNdCRqup91s+ypdTf0LBPKuVlu8AA9Q26J1pH1VX8pTaq4KTmhQQzFQjMV0xkft5TkuIZHa5mFw4oZ2YIeSMBkn7K3dHEZhAGdGYq67RPR0yfN7xlbqAlJeOYwLiNPM3uAP+anuWGEauYIM3deM4moKgul5UBP9ORuP7VGGkxw6q0GRZeJMBnbWckpIL19sXZ9uGMJjCbwzd8VOGH1YDQVNFX21k86BJZ6qo6j8YzPVaKpIICTcmAlnmr3DZ5uiwpPgphrfbwby1zQ5OZtvojsGBtjLSq5ktRnFA898/Fa2//OCV7WT0frYHAGZVM0kpj1IjwiYjwVxzXhPbtzrQLR8ueDXD99MT/0QKXA91i0uJYs/16g7QgLxNCt3N4470ShhiN1Bd2xutRr4joSXBYHwNtTHDTxxAuA12q+97/n4T7kvYYKfy66c5P85s7VSL6d9rCYZTsayn7U7Vuu0Gj/UeS9LDPGtMuakLvx5MqIWppGRTlDdtOcV6pACW3oaGVrNhzVdFOU11/1UMJ7seBAAichYafUPyV/K/5m43eCR8t0l50w7FjxdFLJ+OKArrMkdL+vXYyOfAUIyg2do6uUaKsbFFBJTYFvfFwk4yKty6Qk1pcruNP6e94rd76yIWq0pURImJhcJMdDjiMRclfzBk/E9Vxd9CGw21FEDe3gGm2le8ndCJLKtDx1rLAGCXS CpJkIELl Ln1S3by7Yot5AL69I7dCi6Y/xfEy/kZK5+89X/6a221GI581h1suL/xo3zut6kn+lXIpfiXsmWLj++H9VulP+b4OLnkXdPTX4vJ6Cz/NL9E07iEVdKR6qzD5oh0FrfXicp+qKrQvRQPij2sNN0Rqev/0LMyjUKCQeHFrdjiiF2+PTldgmqGRn+zDpn/23hlFEiIwzXNXOik+7jSV9y7bEfGyy6WtyrCEWG7ng 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: 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") Signed-off-by: Ryan Roberts --- 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 6111ce900ec4..68950b1824d0 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -604,13 +604,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; } /*