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 F176E802A5 for ; Wed, 14 Oct 2026 17:13:01 +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 69EHBmrh001283; Wed, 14 Oct 2026 20:11:49 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHBmrh001283 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="DQKRmR4A" Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EHBJID001207 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 14 Oct 2026 20:11:20 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHBJID001207 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-48c69bdeaacso516858f8f.0 for ; Wed, 14 Oct 2026 10:11:20 -0700 (PDT) X-Gm-Message-State: AFq9FYLmgldIk0TNMtv0jOvdLzkWWmiS6ove8cg/Ov4ox9hwnXUbE4Fz TXvGo9BefIvB4u9+r89y6DW0NApGZrPdodjvpB7VwPmELLLTKQQxozFjKw5eiFZeDjK9a0na5MC 82IbPezzDMmgRrjPCOOFJc5eBnX88h76IYn3rw4bz++NNYTfZzvenMw== X-Gm-Gg: AYBFou1hjTuaRlUcT8S3gSofsC0Cv7Bh0KT2l7qEt/vDqqsnr2jNZXMDezO/LNAj7YH uulPVgZbfPZnhab+LTsf8ZDEHKZzVoGadquQANd/cpUY6+wwdW6GLx/o+cUwVIVqG82hQ6S6R4D tihAhW9dVP6pcAaUlN3QeAnDAg0gTJ4S8siC+kfsp2f9CfUidCeC+RXsBfpyICFACi45Z70IECK 40CcS50TgHATlo7wJ3QcPh9PBf168IK2X8+u/DTdxq6HtFg6TsQJjI9nfYncGbKozZMJ9hqoPmp gSC62RTDinxpwElLD5G1oBQmG78uQMMmotoL0Tq34AAw4aWJkD/vmLIDSRNZVmWpZWKJsjaREqA OFEAloZYR0dAFsN80 X-Received: by 2002:a05:6000:2f85:b0:48b:e25:21d6 with SMTP id ffacd0b85a97d-48dbace1a16mr31264146f8f.41.1791997879428; Wed, 14 Oct 2026 10:11:19 -0700 (PDT) X-Received: by 2002:a05:6000:2f85:b0:48b:e25:21d6 with SMTP id ffacd0b85a97d-48dbace1a16mr31264091f8f.41.1791997878875; Wed, 14 Oct 2026 10:11:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791997878; cv=none; d=google.com; s=arc-20260327; b=K6A7ZvybGB4zDJSF/MrtqGUqP8Re8DBmWwxyIDTr10qRsfkOKJ0yPY2aP4pFR+epIM KhRHsCU3VMUCDLjSryq9I5E5XWwvoo1HoBlFpB3Ayf3cS/EDriEGJBcSaa5z64CKpGLc wki47Hq6pHE4tcYRWLyr5dwSR9s4uFhrToOdKGbTr48nE6ilDURMS9b+aJYjhsRoyass H/iSOotjP/8XSUgfWsGpvNeAoctv9rA6rnDnnQL3gDwLrc9I9Reji/pjC26wNH0rG9Ff jAZhttXDRKUvwUgUM3KCLJez1z4CwyGi8qnrY0N9qnYU/rkcQco1REzsSocnRQnnP11c Vvug== 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=GZGmsiEm1bnUW6uBGsj3qyNtaD9nLg5oXJCy/1TQfb4=; fh=aQfw1i5a4NQPWqzJLDKkrMTvdRoUn/cswL6yDWdmKfA=; b=ZFEkKZR8TYFV79lYu5Oov++yxZpxKXiZIggZFf0GWxrj9pDTp0FmayvVAAVjI6ZmLb bsLEit6A1VQcZJLND0lmiFHOUULxH77c0FoZ0ov/gdiqARBLhqbajjRkfmoEgwn37DeJ 2ctXowj/pKSCkIwmyjOvlYUSAerB/GwKbJoYWHg1zBVh7jNsJuEdajeVlILkANCtQ/yN 4RYtDCo9mBu3kkIENwPHVzNqyQCkjmJdmaCuSumSYhWF8rcHQEKhYcz+6q4SuGaNwN2G Jt/UHRoASHNXn9pEIfRsO3lSYCYxe4ntrBBTxZEhcNYf2FWhh9QQCuca1CjdF4BRoin6 7BdQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=DQKRmR4A; 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-48de0c140b3si12841017f8f.460.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:18 -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=DQKRmR4A; 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=GZGmsiEm1bnUW6uBGsj3qyNtaD9nLg5oXJCy/1TQfb4=; b=DQKRmR4AdOgF5HS5RbP VakpYKZ5HsUG0NQMLZS1P7G7f/4/xYbRTcNfNORyVCcr1duKFvHO4Q4Ap++JXUocxCu90LYaUU0Uh XWanh6z8k2AV6X6934k5bhSmsIVpTYm7zbdx/7GZxtfDnRj+Y2QxgTKiI/Wvspi8hx/vK38nsa1g0 q+lw1KxmB69fxlRmY7gWDUBOemyWWV7kj5CowSjDZCxYjvLqm7Ox5TChgFvuPfiZsY1hU+ZaSpczs pA7O/ShcMuw9tt6nHFf5HKsAD05FnbztpyZfbkYhdrZdgxamRiZsLiAfyH0YnChBCJ1tPrMStPOx4 515ePkeKhWIv8Ag==; 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 1xH2S8-0081J5-08; Wed, 14 Oct 2026 19:11:16 +0200 From: Konstantin Khorenko Date: Wed, 14 Oct 2026 19:11:08 +0200 MIME-Version: 1.0 Message-Id: <20261014-b4-prep-khorenko-vstor-149847-2-doexec-pinned-memory-v1-5-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=1776; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=h2cPnRIvdyNY14vIL8z3rBBTDsje+SDfxcm9KNN3Uw8=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBqz7exZXT4PYe3GUedxhU3K/6X6P4ctDBTku9Aw 9VYyZ5FnHmJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCas+3sQAKCRBRlgpH+WFc Kl/vD/9IKKZVIPBruJGFS6ZbjyVvwYEShplCngheGM9ExgFcffi7MX7fNVg5WbKk6qE6YleFZNi PNYVM6oaZl6k4m6st1k3c2TJz3/MF1/xQjYNsOEvBORcux4SDnkhy2H/1lUbGOtvHXoHpBXCS2x TcXDZuWAgd1Dk8ZwjKuvNyFAL+Bhir8W5ieskHnJvRo7XrJFznv+PnxReeq02ZJN7xbFV8NORmD aiIe7rZCMGAtASMWbC1a6AonYOlXKLbnLurkTGQPlxR7aiRfWx2xpQcog9Dy/YAI5XZMLWuPpvI FkrWBeJKSrqc8Qw8V/V0g9sHhxzwOymCDGtYP3TBg3QRLvbx6r+SlQ1DKyGuu2JKEPwAfV6IJ9H z7cpaScOyKU5Tfx2Til4CzcOb1izbAMsyHS6ZMkZDb/t890z9a2CJXMUxIBuSIe0DwjQ6+9Pf8/ WpuNrK3aKJ+RZs4TGkgpqiPq4S2pC45agEbtOBJ41FaEDBxZbkACWn2T1sMVlmLi7PMfJCyMZ3D N2GH/J4G/+xbSyWO/4gZb2JkW+fYVy74NOAtmwA9efqt2hkf43gJIktMmLRY2bia+my/QN0+K9C arPOaRBQrRbPFA7q3Pma/0SRaB+qz/DVaGZIKdxju3Kw/TyY7w3Hd0If3c7NQOkHaAkaiK2wrcL 73ed/dFiTHIZMoA== 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 5/8] oracle/mm: set MMF_HAS_PINNED on the mm receiving preserved pages 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 fork decides whether an anonymous page may be pinned with folio_needs_cow_for_dma(), which looks at MMF_HAS_PINNED of the parent mm before folio_maybe_dma_pinned(). Only GUP sets that flag, in the mm whose pages it pins. Pages preserved across exec keep a long-term pin taken through the old mm, but the new mm never has the flag, so a fork in the new image clears PageAnonExclusive of a pinned page and maps it read-only in both processes. The next write in the parent copies the page and the device keeps the old one. A debug kernel catches the shared page when the pin is dropped: page dumped because: VM_BUG_ON_PAGE(!PageAnonExclusive(&folio->page)) kernel BUG at mm/gup.c:66! RIP: 0010:sanity_check_pinned_pages+0x237/0x960 unpin_user_pages gup_test_release __fput Set MMF_HAS_PINNED on the new mm when the old one has it. 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 --- fs/exec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/exec.c b/fs/exec.c index 62010a6d63aab..8677347963e20 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -984,6 +984,10 @@ static int vma_dup_some(struct mm_struct *old_mm, struct mm_struct *new_mm) VMA_ITERATOR(vmi, old_mm, 0); int ret = 0; + /* Preserved pages may be pinned, fork has to keep copying them. */ + if (test_bit(MMF_HAS_PINNED, &old_mm->flags)) + set_bit(MMF_HAS_PINNED, &new_mm->flags); + mmap_write_lock_nested(new_mm, SINGLE_DEPTH_NESTING); for_each_vma(vmi, vma) if (vma->vm_flags & VM_EXEC_KEEP) { -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel