From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 9374E802A5 for ; Wed, 14 Oct 2026 17:12:40 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EHBNuJ001220; Wed, 14 Oct 2026 20:11:24 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHBNuJ001220 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="o566jNZ4" Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EHBIc9001181 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 14 Oct 2026 20:11:18 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHBIc9001181 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-48b027578a4so554100f8f.3 for ; Wed, 14 Oct 2026 10:11:18 -0700 (PDT) X-Gm-Message-State: AFq9FYIIvjg+rzPKgLt5DQP8imTSNlIUmdM+e2oSnffgYLNzOL/cSsGq 3GG4eue+xnVmH9eFd4Jz1cin6RCzCIaO6eXl2J65PJruxPjBIb2bRSwfQLbhTMvlULGdFyWecFy aJuRdnPUzJDz4rBD4vkVWFYQGjkxhErFDZCN6ZwKYZbsAhffglM1yAQ== X-Gm-Gg: AYBFou3uc7i6W6iukt69jrtzN8585O2CJHQZ2TuXMmxaG1Jtc51kyDxajk91HGR/6hL QLw0ane+W9GRRF2Eyt2eQUaJkyfmO5Px9PBjkgDJXhGRFg8u1scERKFFomDsd7yerz2RAIQR3Pz kGvG8L2Q51ULK15bWky8t83ord6KYArQ+YJ1i1u+yayWOiipQ/ICi7DqeKbVEiW42dhxvc41pHC wkpqhV8I8QKGtQJZze1wbGbwkUGfhnmF5CgtfbQF4TuvSiX1LmIXo6kjP6OpRItgX9//vYhaxbr bLGrc8pdpPII1FAwNL5fMajaRLFSj+e1+hYiedmfaTW7YcPS7AFLE/7mruXLvEcdHa/Liwlidza fF9F8jtkmtrMTD0yrkA== X-Received: by 2002:a05:6000:60b:b0:487:b28:c82a with SMTP id ffacd0b85a97d-48dbace40damr32964360f8f.47.1791997877875; Wed, 14 Oct 2026 10:11:17 -0700 (PDT) X-Received: by 2002:a05:6000:60b:b0:487:b28:c82a with SMTP id ffacd0b85a97d-48dbace40damr32964295f8f.47.1791997877249; Wed, 14 Oct 2026 10:11:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791997877; cv=none; d=google.com; s=arc-20260327; b=o2mWM3G+IwsQ4ifU4Lr0PrNr9ye44Ar5kqP5ItwdssVqFJH3yf4XBRcWUF0tjmJKKL jfMfZh6vq91XW8eIVZc2tWlos855MHlvtf2M4I3vLZsQV7NDj106Fj10oMTQgrl0Eua3 0L4V8ogWYq+8zgSFUySvZoz0L6cTGZKVABCcL6NfFfHpJEBIKmxOuZWz656uorpTsu1P M8dVtsu6fWexeegGzvxW8dpv73gQfbE3OvkFnf8F2UHY3llmF9ETe9ZgHrYwE1rF+5Uw TgOOC8DK2Y7b5xuaqGcowOn03lPxSoYZ3K1DKfu9HnQ03tH7rRr+fL5mKjrS+N3pT2By VKZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=zWzluyq2d5xy9+3YGDonuMsJlMukYZD4BnKF0F5mEZY=; fh=aQfw1i5a4NQPWqzJLDKkrMTvdRoUn/cswL6yDWdmKfA=; b=rXXi2/066xTX7LACl8EaZzFmalwZ4wAXnV9i3pvBCwCjAzPkiWr+c6fUvkzV5AQvWp WSLDcesui7oQZg9RTq/F/PGcqDPELuqTPVPqrl/bdhNmYGbgZOZZyjBJRHtIvr5uU1k0 I5J1CdvDUAEe5gpJgSn8uMr3MsE/MZTAn5Mt0cSe1AhF4QE6/H5+EuuU8iXBNFICOWkv EDSSkq5HB/tyq8/5Cnm2cZLyBM26OcJ4Kia8JaCxxE7URQA/3QxuaLFNvis//R7MgaQL EY9D1Wm7hfYc/Q3Lfr6kwhNCDOFYGVoI2O5nZzTzDxhA5BuXE6h6DiXuo/tsxRywaXI7 rLaw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=o566jNZ4; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48de0bf6585si13185747f8f.313.2026.10.14.10.11.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Oct 2026 10:11:17 -0700 (PDT) Received-SPF: pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=o566jNZ4; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Content-Type:MIME-Version:Subject:Date :From; bh=zWzluyq2d5xy9+3YGDonuMsJlMukYZD4BnKF0F5mEZY=; b=o566jNZ46bdedScgcYu /Yan6NicE+Sq5CL14AqUlwku9F3z9QkvP4DDKmAgfGpl0ZDHwewMVPi4zqxPiAf+P/oFbdrA1jRXv ldRRCgqqX2q0ifQtrXigTTY0mjPMEeTG05g4aS7F5MUY0GqzufD1In8mYRkZnTjHIxALg3PqrWBoc 2LkOpWl7OTugnsY22vNADzWETKQCRoAbnQwFeP3sP34KLuc2DzFh11PgmlzBeTg6Pr8FW20cOslMH ZAnWO/ZVLxtIM39gF65JYejyFcST3QrK7Z2uYfe45RppmjS66XllRrxHEhPKKTRXFzxZoK1ha0g3q 1gWaIEjvDcf9qlg==; Received: from ch-demo-asa.virtuozzo.com ([130.117.225.8] helo=f0.sw.ru) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xH2S7-0081J5-2e; Wed, 14 Oct 2026 19:11:16 +0200 From: Konstantin Khorenko Date: Wed, 14 Oct 2026 19:11:07 +0200 MIME-Version: 1.0 Message-Id: <20261014-b4-prep-khorenko-vstor-149847-2-doexec-pinned-memory-v1-4-36f1120f9b57@virtuozzo.com> References: <20261014-b4-prep-khorenko-vstor-149847-2-doexec-pinned-memory-v1-0-36f1120f9b57@virtuozzo.com> In-Reply-To: <20261014-b4-prep-khorenko-vstor-149847-2-doexec-pinned-memory-v1-0-36f1120f9b57@virtuozzo.com> To: Vasileios Almpanis , Andrey Drobyshev , Pavel Tikhomirov X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2561; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=J1wSwec+rZBwmpvjKLVsDpYmyTgU/jbQImN61bZIoNY=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBqz7exsHYQ6E03EScJ1ERog4y2fY5tyzRT8iLtC yYAr5Plji2JAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCas+3sQAKCRBRlgpH+WFc KkZ+D/0XwfF5RjdGyYnixebD/fGsfvyUgojsZ66vyu2x2LmVSDPczNBpAHyjHsLb46ScnHE39P2 i5xY6oQzc2IYEabnjHVMFt7wkRa88Pw4ZK0HWSp3PnRy4cNYQZW7SDnkeP4OthVadeP3I1b1Bnf g4v2lj+xLmXrpB5olTbwZh+l6rBydTe1oyn77NTFa2F1f/G+eu70zo2tQ9EAWkBu7C349D5dMAG tI5F9C5o0W+ODne/gOU8Ik6s0UwuC/1kludFfoupOIs7RV0UXzWdD92dt/X6mQRXEiV8I33PtZu 5SoQt5kNKFMU/cjrp7cpfiIMRZS00DDPmusPLaDDW59Za75BmX7z0nc7Ax3Ipu8NAa6BFfv/Aoi Mo3+lJZ8znxpws2o6qdP4K7N8vCCKKX4cUB93iuj1SAuuCyhvQ+X6PbXk3voDoDPMcK3gnyciPk rWAL1Ud774mWBOMaek9nC/d4BLLV/AhfsY3ZNjNMD7Bo2f6UnGyk213P0SQUlbRmMlkDAA8eNMp KledqvldLTpXlkSjZ/FLWF3F3TwDYUeIKEBAmSh7wU9yS75p/W6gIXlFz9JEFLXXKmcG2AhW6TN 0IjRL1svJQvS00sfF/QByOVbO9CvvgHhTLY7RyiorsQIoxh2pAS5Lggm97AB7Ud3LbPDukW6VJZ gBSZi+zCOEaYtqQ== X-Developer-Key: i=khorenko@virtuozzo.com; a=openpgp; fpr=560F6DC83DC5D3D063BD082C51960A47F9615C2A X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 4/8] oracle/mm: write protect preserved PTEs but keep them exclusive X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org Commit 37d9f55655ea ("oracle/mm: do not write protect COW mappings when preserving across exec") leaves the PTE of a preserved anonymous page writable in both the outgoing and the new mm. With CONFIG_PAGE_TABLE_CHECK, which refuses to install a writable PTE for an anonymous page that is mapped already, the first preserving exec panics: kernel BUG at mm/page_table_check.c:118! RIP: 0010:page_table_check_set+0x484/0x520 __page_table_check_ptes_set copy_present_ptes copy_pte_range ... copy_page_range_mt vma_dup exec_mmap The writable PTE is not what prevents the COW of a pinned page: the same patch keeps PageAnonExclusive set on the preserved page, and do_wp_page() reuses an exclusive anonymous page instead of copying it. Write protect the PTE in both mms again, as fork does. The first write in the new image takes a fault that reuses the page, which is what the PMD path already does since copy_huge_pmd() write protects both PMDs. Unlike fork, the copy does not flush the TLB of the old mm after write protecting it; the zap of the old ranges later in this series does. Fixes: 37d9f55655ea ("oracle/mm: do not write protect COW mappings when preserving across exec") https://virtuozzo.atlassian.net/browse/VSTOR-150231 Feature: oracle/mm: MADV_DOEXEC madvise() flag Assisted-by: LLM Signed-off-by: Konstantin Khorenko --- mm/memory.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index a240246762751..1c128162f5cda 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -956,15 +956,13 @@ static __always_inline void __copy_present_ptes(struct vm_area_struct *dst_vma, pte_t pte, unsigned long addr, int nr) { struct mm_struct *src_mm = src_vma->vm_mm; - bool is_exec_keep = !!(dst_vma->vm_flags & VM_EXEC_KEEP); - /* If it's a COW mapping, write protect it both processes. */ /* - * But don't protect it if PTEs are being copied as part of preserving - * memory across exec since the page may be pinned for DMA and must not - * be COW'd. + * If it's a COW mapping, write protect it both processes. A page + * preserved across exec keeps PageAnonExclusive, so the new process + * reuses it on the first write instead of copying it. */ - if (is_cow_mapping(src_vma->vm_flags) && pte_write(pte) && !is_exec_keep) { + if (is_cow_mapping(src_vma->vm_flags) && pte_write(pte)) { wrprotect_ptes(src_mm, addr, src_pte, nr); pte = pte_wrprotect(pte); } -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel