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 08779802A5 for ; Wed, 14 Oct 2026 17:16:45 +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 69EHFKVR001506; Wed, 14 Oct 2026 20:15:21 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHFKVR001506 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="QBM3WCBM" Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69EHF66G001459 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 14 Oct 2026 20:15:06 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69EHF66G001459 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4a17b4c613fso22666135e9.2 for ; Wed, 14 Oct 2026 10:15:06 -0700 (PDT) X-Gm-Message-State: AFq9FYJn24pweUw6QxXWHW+YB56jGW5aClU7+YrQnKb0k1XWyoehOpIR Mq5LeTv20xKMxzOEihFiq/6ptG97UvXpemDvXwj3gV9p7MW6jKW1NclL1cuy32zs4IVnIbX/9Jm 2L9eoF0bTR8dp6/q7q7FVQZgDijZFPAgkrWNreT7Tk0aT5w9hJRVRwQ== X-Gm-Gg: AYBFou0VkiQ+tzkHpjI+KJ0rii22fdAiM01DjFQUN6uoKAQh4sdeUMEWgVXTnTGdvhF +FWcVsrGbwiBwLNiVILfUFP4vFiknE1LWLUsdbJYImWh/AHMXxZlAT84wsTQygoOUWyQK5nMa/R jtph6eMiJS/mFf5kikEqTh4IoIimRWoRBhuQ9az/ZWBMhccOusdGgiQwCR+fHX6MIc89yPAljVf XT2LwNWr0rYFOlrJTO3YVNqwmtc+Os0za7L8jyU+9OSbe0tp2O96lVE3OsC+JIjKxYxFGKQ2DaO mVwT0MoYzHm+B2HkQJ3Wl0u93Y6JxK01Qg3B/vxHug9pfsKqG+SJ5fKbu/6sXlpxvVn8SXgyDSE /wp6CJc4GP0oeMy2+Hw== X-Received: by 2002:a05:600c:1d0e:b0:49f:ec98:f030 with SMTP id 5b1f17b1804b1-4a18e4e9db3mr332249815e9.33.1791998105940; Wed, 14 Oct 2026 10:15:05 -0700 (PDT) X-Received: by 2002:a05:600c:1d0e:b0:49f:ec98:f030 with SMTP id 5b1f17b1804b1-4a18e4e9db3mr332249465e9.33.1791998105491; Wed, 14 Oct 2026 10:15:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791998105; cv=none; d=google.com; s=arc-20260327; b=QftPgHhwhJMSAfpVkmNujFuVA78KyfmoS1CwQks5zIKvTaS1pkv5oZPKC7ml4ZhF9z 04QOdYyOhUmIvD/9rR8Pi9LVmmc4ckmDaV435IMxPCR0mi7As1IwyXFxB3OK0ZjCucJ9 MvL0OI3FRvTfbZp5JvwYK/zrIur/jS+aWxM3bCZy954qedGjd5oBhKa0p7Ilcuc/5+qX nQj4bPgLtzdbrPMMN+eaKD8KYB7d9XZBYfIDXKZ+CCoDr3JYazUU9SnIOW1Y4EtMyVWO WoAgK9EY7Z+IlG/kGFwxNI9FsypF0d94OV4snBZU0Xa0egxYy7Ob0gm9IhQSwOiRl9fr 0AdA== 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=a+K0XkMwfyINhw6Pq5zAzSyIFH5uFJurPeE3nEs7A+s=; fh=xUcS46XhSaUOWFT7CPWNuABJ4EJ7/+S5u4N+e+rlWN4=; b=plYJJvR+QjC04HPrUOgNKrxyk/S9K8Wi7Wf6C/iIWMkfqOMvNhQmxzvtrX3l6BgGXU PH3Bwvbiwf9AszNVtrGj0uzTW/uLKdOHNkhIdTprEoxiVhwmKrx0zhzdNdABQxTCCEXh ERyiDWa9Q3jNNYDd3tDc1GrWMdHMAyFAAxntmtblHErGBwr0BFclU2Tir/lnK14azt7r f4dF6W4cG92LffoVcESrEK5z60s4MPGfPS3a8U7H3rVnQvAmNZh2MpMn6IoFyI/iD1+v N5GCMT/r4ZM1R0Jrc0NBqJFHVmv93AciIWMtyexLoK3o/Cu9aZzFiQP8UcdBqmiCI17D bIHw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=QBM3WCBM; 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 5b1f17b1804b1-4a1bd9895c0si5736175e9.9.2026.10.14.10.15.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Oct 2026 10:15:05 -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=QBM3WCBM; 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=a+K0XkMwfyINhw6Pq5zAzSyIFH5uFJurPeE3nEs7A+s=; b=QBM3WCBM5yHO8LC//JA 1xW/t/lO0upLqcS/pU9fR3tF7y/fLq+xR8lFddDGKPZOtrs6BfSMF5vKGGuQKpoo5be+VtOr2rr2O 1LT8zQKf3CeP79acR3+bOCb8OlvO6cNEtisitdLmvFyY3NUPxN1aHtt4HTim1qM86C9qGvVWy7QUj /yza74vKeMeuEddY6xkn8K/RFlZBaQ5kc++Obt4mFAGtKs9uvsWbdNrBglj9CfiGwGLlumE77JkiS osN7YHSmWuyVuKFUL/ZA7N5+5cDREn0FjTP4r6ZjciaGlXPG5RBcF9lCQQa4yU2ZlGzk5e4K9kPua myGZWAE0J0SyrMA==; 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 1xH2Vo-008657-0B; Wed, 14 Oct 2026 19:15:04 +0200 From: Konstantin Khorenko Date: Wed, 14 Oct 2026 19:15:02 +0200 MIME-Version: 1.0 Message-Id: <20261014-b4-prep-khorenko-vstor-149847-5-doexec-selftests-v1-4-b23b454691db@virtuozzo.com> References: <20261014-b4-prep-khorenko-vstor-149847-5-doexec-selftests-v1-0-b23b454691db@virtuozzo.com> In-Reply-To: <20261014-b4-prep-khorenko-vstor-149847-5-doexec-selftests-v1-0-b23b454691db@virtuozzo.com> To: Pavel Tikhomirov , Andrey Drobyshev , Vasileios Almpanis X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2223; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=3I1Qf+tRpsqh6NdOiQsqNGfzqUlUOj392+fhuiYVZiM=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBqz7iWj+nAS199ZsI/JQhwW8OZR4u9hoNIpBQXs 3+M0xo9XmKJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCas+4lgAKCRBRlgpH+WFc KtFBD/40E+VdZsuGZmNa+iLXYBrUh85kLa4efcXzlDRaBO47MP3x5IwlTaxXsj/+Y790Wtt6LOM 6HiB0LKOpvVwcdN4CaGv7NmzQlsia2klelqQslZdqMQgRSmKuxpfNFQeF2HCOFI/F2qi/XqdFdl a/wrFOySd08qCqWOgLUYrVqAg5qSWsH9gNJ6WOAlT9DayCOMDkRbJNQF+pAv4beyKWapGcI0Rrw 8EvawHuYyOI+8gu3YAZtVLg9+qVYnLK/kfi+6xlMRFfogYoh7b8UbJBBl6zLAvWQt5BQxu9KMGz QMDM+iE0P7cg4t+NhiPxtwyrwa4QSXYOfMf09ufvdBGZ8P8aynq+D7CuvlgCyWN9soNB5CR44S6 T33RVLItbejsrLSrmRZ3u1Re0kIwvLZqzfHAum8+yvC+DpD6n/gIGEmi3ztkqIHuluNL+zJ+OwW 8NUqhlevud2CRnn/+e/EpmUGzVoBRvrXBxWwFmdBukOqAg3saiOp3p80trLGRfvd9OujzdbNhSI OtyRQFip6lhRBueSljN5pl6jwoykPHdQ+v4gfmTMO4+7AhiVxgKLiTa8B53pIYNjuqnwZCgwu9s L0yJ1dFpTgBw9ZSyJIm9YHMgc9ARrbYdLlR8FPHgRG5OukT3mhu/qVciUzxz1Mp+YFDPJPvyUzk tvKgy3S38JHrUTg== 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/7] selftests/mm: check that MADV_DOEXEC refuses an exec from a vfork() child 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 A vfork() parent shares the mm with the child and would be woken in exec_mmap() before the preserved ranges are copied, so the exec is refused with EBUSY. Check the errno in the child and that the parent's marked memory is intact afterwards. https://virtuozzo.atlassian.net/browse/VSTOR-150234 Feature: oracle/mm: MADV_DOEXEC madvise() flag Assisted-by: LLM Signed-off-by: Konstantin Khorenko --- tools/testing/selftests/mm/doexec.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tools/testing/selftests/mm/doexec.c b/tools/testing/selftests/mm/doexec.c index ab1d461de5517..01e786a4cb75c 100644 --- a/tools/testing/selftests/mm/doexec.c +++ b/tools/testing/selftests/mm/doexec.c @@ -1839,6 +1839,33 @@ struct more_case { int (*fn)(void); }; +/* A vfork() parent shares the mm and survives the exec: refused. */ +static int vfork_exec(void) +{ + size_t size = sysconf(_SC_PAGESIZE); + char *ram = preserved_ram(size); + char addr_arg[32], size_arg[32]; + char *args[] = { "doexec", "--check", addr_arg, size_arg, "1", NULL }; + enum { REFUSED = 10 }; + pid_t pid; + + if (!ram) + return unsupported(); + snprintf(addr_arg, sizeof(addr_arg), "%llu", + (unsigned long long)(uintptr_t)ram); + snprintf(size_arg, sizeof(size_arg), "%zu", size); + pid = vfork(); + if (!pid) { + execv("/proc/self/exe", args); + _exit(errno == EBUSY ? REFUSED : KSFT_FAIL); + } + if (pid < 0) + return KSFT_FAIL; + if (wait_child(pid) != REFUSED) + return fail("preserving exec from a vfork() child not refused"); + return check_bytes(ram, size, 0x31) ? KSFT_FAIL : KSFT_PASS; +} + static const struct more_case more_cases[] = { { "madv_doexec_flag sysctl matches MADV_DOEXEC", sysctl_flag }, { "shared, file, executable and stack mappings refused", refused_mappings }, @@ -1858,6 +1885,7 @@ static const struct more_case more_cases[] = { { "1 GB sparse range: preserved", sparse_exec }, { "swapped out pages: preserved", swapped_exec }, { "half of a THP: preserved", thp_half_exec }, + { "vfork() child: preserving exec refused", vfork_exec }, }; int main(int argc, char **argv) -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel