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 4B56A802A5 for ; Wed, 14 Oct 2026 17:12:53 +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 69EHBdtA001248; Wed, 14 Oct 2026 20:11:40 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHBdtA001248 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="S94dBorV" Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EHBJMQ001194 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 14 Oct 2026 20:11:19 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHBJMQ001194 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4a0761224e1so10991735e9.0 for ; Wed, 14 Oct 2026 10:11:19 -0700 (PDT) X-Gm-Message-State: AFq9FYJqHVO7gSyBPAOkS4Lwo+E09C2gjBGRnTFerunl91qVEz/r5adv WhSThDUaIcVIJDaD4npvKgpY0+OynNwXly9sALFaQFVkZnCN5tvlwC7wIrO2/k7gns1mdkXpiGR G2TR9gYKVyK91Cl+d0jObI8dKEnTSuYztOTWkkmHiVPAnZAthLn8puA== X-Gm-Gg: AYBFou2wVhDVRtb/bl8Rm9GOxpH3qEkh7VNdIRfQ1dsiwRjQcUeMaHx9xmDN+6gKVnq IftfTaXzP8zaokgHV7a9CllsDv1aOP30yYsOoU6FfQOwKx5oK44egjJljQaKLXxpoEZ6w1gmHWq KFnCFskohjxzc0d152gy8vsCZUUouascUrOWRH3V0sjvJXAo2g9pn+ZiR5IueoHbezAEHxtRX7J 8iAYmO1GjoXKMxLX7tZmOdJkoHrc5CLpoBFkr1AlFnxEChgUQNs3Q4QdIQo0hChO7IZI+K7palW +M+0NY9M5A9kP5XnBZXBJSFbWZaNTIXK9FtEV2gAn31lUGQjw4T6XNEE83mZYs/l8f5rSmo9NYD mvB4tPjyI4jfHGMigbA== X-Received: by 2002:a05:600c:c165:b0:4a1:706f:b40d with SMTP id 5b1f17b1804b1-4a18e4988ecmr326770235e9.7.1791997878706; Wed, 14 Oct 2026 10:11:18 -0700 (PDT) X-Received: by 2002:a05:600c:c165:b0:4a1:706f:b40d with SMTP id 5b1f17b1804b1-4a18e4988ecmr326768475e9.7.1791997876799; Wed, 14 Oct 2026 10:11:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791997876; cv=none; d=google.com; s=arc-20260327; b=XVH2maFWa/qCgsAG2bT/frAJcdBbyFvy28dYmLG/+aDJ63jU5Hs/v8usyKkrKZE3u4 OOtxpfT3Ln6g2zWa+9o0RkRiGkNKqJ5H+Jyy2g98r52ddzeRFL7FM+oioCPaezIRMqnY BCv/IT0RrNrzXbsAYP+mlGD8YPa3w4Y0oR9B6BErwg/PWSM0I+9XiDmWI4K9yxGv0BFx a0knNUQ3tgl0QH1kOvV4WbIONq+2BwAQgZVfDvoHlfxlRgxdQHpL+4uyHLsjjykHaZmg IwazGKSviVjpWsMv+TW3PbT81tNNj7ZT/jO6sldPeBgRIUoAAF645fmyxwIaPH4APqXN zhIw== 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=GvfPqxwQ+0UY7KDpUhsbZuI3duDNY56BKSGVWLSwPn0=; fh=aQfw1i5a4NQPWqzJLDKkrMTvdRoUn/cswL6yDWdmKfA=; b=DdZSfKBX4WZB9WQsw0p6IJWB2c4LLVUcU90/N6aRAyS4JlvID3eJ/LjT77y0oQSDHB TzRahjD3ObKRNe1dPyEVaaGtOdY4KR+q/6Cbdk8Ols45db9mW7KmFy+yrZ7rchR0W2H0 nL2PmxTW5ZGPWI7fOYqmcFD2kU89HBhLjXKwMQ4OhPQhqkFEmioEqiPTVt/7c5uB9Fg8 4b/FoThNCcI7VJy9s9mn/TBW0+WuvIbv8YB5ASbS78Cv4HtU7J8njtVfdbrFYiD1vzGa RrRq5579svx//cfj1lvp+GKTPM5yasHS2lQhDMo6uDjEnO1vyc9Bur8B8tahQHCAcI/Y 8Tjw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=S94dBorV; 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-48de0ac8a84si12260200f8f.115.2026.10.14.10.11.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Oct 2026 10:11:16 -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=S94dBorV; 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=GvfPqxwQ+0UY7KDpUhsbZuI3duDNY56BKSGVWLSwPn0=; b=S94dBorVI0MC36Zwni1 21Zj87sD/P+E2n2st6pJQp5hQ3cQ/f3yYOofAI8Vu4jY+hjPTFhRXd+AvdKZ9MOtkxY6bPdwMaJcM hNeQpVl4EOCX363su0V2U3rFTs6aku1mbtiZgcSWnyM1dfHz8iUOm2dFPUe0BMJP7Mw0yugza2mba kvimVURFyf67Pru27TzLzPmZ44LVPqA1rlOql6QQ5WZIJHYZ/FdpltFnP43LL1BRvozK06OSy8GdY 2X3qb2b2DIyve7eVzMBcDNvwd/2HDH1W4iKMEpq8lt+heOpH7C0uwE/6zJFQV0F5bUXfmi83/Kc3h Q4HK+IOZO5XKvKA==; 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-1B; Wed, 14 Oct 2026 19:11:15 +0200 From: Konstantin Khorenko Date: Wed, 14 Oct 2026 19:11:05 +0200 MIME-Version: 1.0 Message-Id: <20261014-b4-prep-khorenko-vstor-149847-2-doexec-pinned-memory-v1-2-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=3093; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=ADBos7YGOWqSY4wYla2x6zH1BhoqnCSIRbpk2I78wmU=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBqz7ev9nwqtQJvAP5PkL+btsQjmWwD8krEp7K2q L6Yapp0s9WJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCas+3rwAKCRBRlgpH+WFc KmbKD/9rsgti2rBwq1vLaC21dNenUSdS5IMHlNGWO+sZUXNEf1O3UwvYkAC9FdgcgJ7pU4e+7Mf O9iXj+PNbi8m+q40iret6uGqtG/4llARKmsVUj4ehMo0tIhqNoD2Nuzu5XDHAoJjldCms0Ldg5d 97sCDAuP1k9s6za+ucqidSOXduvgNLFC5Hq0f6+gT4iIiFgfuhlIvk1TJiZAYGC2qnnxvdGYlde vASSzCIBfytUNq+0/Z4RVOzT0qeKoeSGmm2odyTfz/1iIzwF0FpfvdsXt6pXuhM/kJDlzl+IqSk lti28GxpBVCXV8SGouZVZnpr6JABr2xm+tA0/+cgv+Hg6+oTv9tBZiwXAdOYuSRfn/FkV+zAI84 whhMIuSU9iggV45IQ3Ay2EWSoYb4Wcwcb65kMRr+/jzbFnTr2+osb/GV6RB4R9dQPewHN8cy/q4 HMDEaoRrTX+js3mDKQ0qHpSakWYSf+K+9PWHM1d+07kEZ/zIiIzHj0qLmi+6cU77t6eSkqbcTKn 0jKdWQiDdi5ogc/tg8ZaNtSdZI1KHaffzKRcSez/nOXP0CGTOqVRbtmhcgRyzw//V4UaFeyN5ad 3zGmyKaY21R8cERJDpW0bZLsZUGW3KWStbcWiIY7CHjqygjfIs5hkPkPR7rdAfAw1myIz/zwxV5 Wg2RaT9J0earMwA== 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 2/8] oracle/mm: hold the source mmap write lock when copying PTEs 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 From: Anthony Yznaga The copy_p*_range() routines assume the mmap write lock is held for both the source and destination and therefore there will be no unexpected THP transitions while PTEs are copied (for example, due to khugepaged). The write lock is already held on the destination mm, but until now only the read lock was held on the source. Orabug: 38029049 Signed-off-by: Anthony Yznaga Reviewed-by: Harry Yoo (cherry picked from commit 285a140316fa44f0cdc6608c109ba525e52d6c3f) Taken from Oracle linux-uek branch uek8/u2. Applied cleanly; the only change is a trailing space dropped from the new comment in exec_mmap(). Fixes: 9e6d16a6c0a1 ("oracle/mm: introduce VM_EXEC_KEEP") 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 | 19 ++++++++++++++++--- mm/mmap.c | 7 ++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/fs/exec.c b/fs/exec.c index e861a54b491f8..62010a6d63aab 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1028,10 +1028,20 @@ static int exec_mmap(struct linux_binprm *bprm) up_write(&tsk->signal->exec_update_lock); return ret; } - if (bprm->accepts_preserved_mem) { + if (unlikely(bprm->accepts_preserved_mem)) { + /* + * Acquire the write lock to avoid changes to page + * table entries while they are copied. + */ + mmap_read_unlock(old_mm); + ret = mmap_write_lock_killable(old_mm); + if (ret) { + up_write(&tsk->signal->exec_update_lock); + return ret; + } ret = vma_dup_some(old_mm, mm); if (ret) { - mmap_read_unlock(old_mm); + mmap_write_unlock(old_mm); up_write(&tsk->signal->exec_update_lock); return ret; } @@ -1063,7 +1073,10 @@ static int exec_mmap(struct linux_binprm *bprm) task_unlock(tsk); lru_gen_use_mm(mm); if (old_mm) { - mmap_read_unlock(old_mm); + if (unlikely(bprm->accepts_preserved_mem)) + mmap_write_unlock(old_mm); + else + mmap_read_unlock(old_mm); BUG_ON(active_mm != old_mm); setmax_mm_hiwater_rss(&tsk->signal->maxrss, old_mm); mm_update_next_owner(old_mm); diff --git a/mm/mmap.c b/mm/mmap.c index 320f397816df9..bc508c6bd934b 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1800,12 +1800,9 @@ int vma_dup(struct vm_area_struct *old_vma, struct mm_struct *mm) * from old_vma. Since vma_dup() is only called during exec to * duplicate a vma from the outgoing mm into the mm of the new * process, this effectively transfers the accounting from the old - * vma to new one. - * exec holds the mmap read lock on the outgoing mm at this point - * so __vm_flags_mod() is used here to avoid an assert that the - * mmap write lock is held which is not needed in this instance.. + * vma to the new one. */ - __vm_flags_mod(old_vma, 0, VM_ACCOUNT); + vm_flags_clear(old_vma, VM_ACCOUNT); #ifdef CONFIG_PADATA ret = copy_page_range_mt(vma, old_vma); -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel