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 83B7580160 for ; Wed, 9 Sep 2026 11:05:20 +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 689B41Gi019115; Wed, 9 Sep 2026 14:04:02 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 689B41Gi019115 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="LOaFBIPm" Received: from mail-yw1-f197.google.com (mail-yw1-f197.google.com [209.85.128.197]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 689B3xGd019111 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 9 Sep 2026 14:03:59 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 689B3xGd019111 Received: by mail-yw1-f197.google.com with SMTP id 00721157ae682-869553205a7so87667987b3.1 for ; Wed, 09 Sep 2026 04:03:59 -0700 (PDT) X-Gm-Message-State: AFuF++lVjk5anLmidiYqAIft/ZuyYe2orlvUA0kxbnUu//FZuolKL5Zq NEfRJxaknpX3LZWvdjS+Q5WZH6TB5tzOe7nFitp3JA0wcg+8GgtUIjOF3RegLJzHbVpunLTOsmj 7AlALLkV9M57dG4LHBiTN84T5raKg3CpTyAlq6OoL++xUuR19evRojg== X-Gm-Gg: AYBFou0p4DKAbpAgzKwHcqoA/0AKYe/kZkuzZVTe767YPULoMj4QBDjGs240wyJamRY o3inOWon3wgh0yHRPJZ0/AptvZF6LWoLYsXAtIoavsWJLlpy9htxd5jDk1FaGmFaNnZKFd8wUR0 9SX5wbI+EUl8AmJoSmRLshbIm1G4u91X1GWi9TlYd7qpQlnWu0mDbyc9MkrWUPHALUmBlqZf6mA TtD+kgYu/uNsgsL1dE/ly99Ap13oKNQ5H8LFcfMa0xdgeeLPntyPdhCsJ1KdYjOBkC9pk1UIvv6 vfgu3ACHqPyYH/RLWkldJqB0zIiXax0aGvMlGM8krjclNf2Ly3WSuwISMCz+Rpt3IMsJtN2JlEl HsAqnGAFxk3UdfZQMmZfGC91CbpNzbG5BIxLLymPt9IPU8czvj9X02P02OT0crA4RIiVE6TTX6M Gy3OBnp+SV+fdFtZ0ajybaVornLXFiJzcC X-Received: by 2002:a05:690c:7488:b0:87f:e563:de9b with SMTP id 00721157ae682-87fe563df52mr9669997b3.18.1788951838638; Wed, 09 Sep 2026 04:03:58 -0700 (PDT) X-Received: by 2002:a05:690c:7488:b0:87f:e563:de9b with SMTP id 00721157ae682-87fe563df52mr9669477b3.18.1788951838020; Wed, 09 Sep 2026 04:03:58 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1788951838; cv=pass; d=google.com; s=arc-20260327; b=A3FHYyUyjJBCwYDocj5Id43PMtWPRDU57CYEOC3YwCMEDqhsXwg6Dfg4JBd3CLeYZV DRt9QbQ0NkuELGnPfqnt4mwJPveRSpF04fuXmumyKJ70FFPfwZ00obR3l1YSrWzbMRe4 cmQ23eDu6BPHafRPiCD9tJUDlALDqxf/2swFTFlcwY7SzPLeY6ssp5fASNKb5md/9FVq 7gfKDvBoez0DLu/88FEX65kPzNm0U+ObiSFpBvz67nydEfdpxqKBUkbHtBTeV5M9D3gI XoGoXbnXKGqq1xcGcYXnCYjaH4i3oCUyWrVbKYJc29ZVFeHBD+YJg1qxb9ihHlo1mTr+ m7rg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=mime-version:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:date :message-id:dkim-signature; bh=D2StVPj0NRBgujqtjzocEC/bV2yvJTaGSUvN53l/80o=; fh=KXEwPZbGUZYauayMTPTBNvtMpsg+YNuB7pyA8vyBvSE=; b=jFiiEGPqNPjVxjOGLpjjBLbFcEl137emod8/ArYuJvPXdlWmi2YT0Ima3t5juClWd8 nDoWVkwB5Rb4vc5VkjXSRRT0AFQRNtQ0wSBIn4g3I1jbNHbg+57/Ne/pytjg1XctJFYv x90wLpRuqIh3SbVILavScO23jH0af3PzZ3nkTMdmkAD3w7qYiX6c29wLzRQKf2pPQ8g4 nPNfxk6ChKGQDeVSxluVDGSCzud1CQajMozW0mG66UCnzMCtUj1T+fIi0b4jT91x7imT 4M7ZnFlP/V++oY7zR5p4Um7alWXwRDLyiUMGsTl3+HvJMDi+e+z0wgrLbfMwtuR8M1nb 8iCw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=LOaFBIPm; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 2a01:111:f403:c201::3 as permitted sender) smtp.mailfrom=vladimir.riabchun@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazlp170110003.outbound.protection.outlook.com. [2a01:111:f403:c201::3]) by mx.google.com with ESMTPS id 00721157ae682-8714af535cesi74416577b3.145.2026.09.09.04.03.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2026 04:03:57 -0700 (PDT) Received-SPF: pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 2a01:111:f403:c201::3 as permitted sender) client-ip=2a01:111:f403:c201::3; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=LOaFBIPm; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 2a01:111:f403:c201::3 as permitted sender) smtp.mailfrom=vladimir.riabchun@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RL3Ie7GGPqDhh2YJwNWBOzESwiI9riaV647Z3ZljuXLBQw2kOlqkFscRnOU0TLtBr1OU83722LEArRTkGaHsM0693wf16WhhpZiUmJLiRU/66HCj4hpI8iTyLL1EGnEpTJm5C9+u6PYiRMFR/R2umdDFwOjclfN78xaQTQuQrYXZ9AogfUSISoa5YdXpm8DuvpyI9WNJnUbqeU/rgC49KV0DV2KMYQlvR9hOhN6NILwTQNo5Fq9YikK9qF6X8odCOdblErlANcVtCW6hVC/ND4hkyukl+XBI+OU2qHrAVpmXyz9FD7cTTL0JeAK+jm/mfIhUVkbdaWSw7iqNiHnpYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=D2StVPj0NRBgujqtjzocEC/bV2yvJTaGSUvN53l/80o=; b=ocCsuvnAZpYfrbiXHDpjdK3pQpAz7PsVl9356JQ/Ww3qcmPO4RduyshQPL6HWGkwwffOY/LxmC+JkQc9XdRb10YjpSjBAXyHn1ayUX7VrvML65jYVL8tr04jZmVK5/UfSEbq92RiO2n6dfYABqGKc/3eSEjBw20TY8y644A64z3cUyH1wnnEgeDPYl5mywDhfIomaSuEnXr/yWBRAsroccs6q7r5piPUSgEFFOB1OwzX5H4gLHtL3bePszw7WW7xgCxJT6WMwHwa+J8mkfotSh3zBQcpvaSU9GnBqN2GDAvaq4qqLvWgBOR5IdI/AnaJCNbruM6wZUJKoHImoEouKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D2StVPj0NRBgujqtjzocEC/bV2yvJTaGSUvN53l/80o=; b=LOaFBIPm3nSmxDWT8gaEdE8M5faYXExo/LOnG7AR7u8CXtNNmO8uR+C/BN0w99DFkzD/px14pyuSfAuHh/vngxwdqz1avMTrkZcFce17v7BHRgemuJMLINGu7mvB/cXUcJK9O/je/WvPKKQYDWmVe5D7NcmCXHcKmToD8T5WVfvrmW+1RMvv4pl2f0+UAhJvrjjzwNmYwMDtIXzpuidNnL41xSY4/EDmG5l0udQKjIiafF8GYn+lP6Cd8682BxaHvOOhz1093El6Sm4e+wi4AaXaAZ9J+D0eEGvrXFX4U6JL7YagjZVUSHZNpsARAMysnVqjKQrkNthZZID4tmVw7g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from DU0PR08MB8470.eurprd08.prod.outlook.com (2603:10a6:10:406::17) by GVXPR08MB11494.eurprd08.prod.outlook.com (2603:10a6:150:2e3::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.7; Wed, 9 Sep 2026 11:03:48 +0000 Received: from DU0PR08MB8470.eurprd08.prod.outlook.com ([fe80::3db0:9d70:4641:5f47]) by DU0PR08MB8470.eurprd08.prod.outlook.com ([fe80::3db0:9d70:4641:5f47%4]) with mapi id 15.21.0406.005; Wed, 9 Sep 2026 11:03:48 +0000 Message-ID: Date: Wed, 9 Sep 2026 13:03:45 +0200 User-Agent: Mozilla Thunderbird To: Konstantin Khorenko References: <20260907-ve-selftest-improv-v1-0-a17847abbd48@virtuozzo.com> <20260907-ve-selftest-improv-v1-2-a17847abbd48@virtuozzo.com> Content-Language: en-US From: Vladimir Riabchun In-Reply-To: <20260907-ve-selftest-improv-v1-2-a17847abbd48@virtuozzo.com> X-ClientProxiedBy: VIUP296CA0069.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:337::6) To DU0PR08MB8470.eurprd08.prod.outlook.com (2603:10a6:10:406::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR08MB8470:EE_|GVXPR08MB11494:EE_ X-MS-Office365-Filtering-Correlation-Id: 96f1ae86-55ea-4909-0e55-08df0e6205fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|1800799024|376014|366016|10067099003|6133799003|22082099003|18002099003|4143699003|56012099006; X-Microsoft-Antispam-Message-Info: OMXIsjZ9xp5X/ppFu4WUOQW3q9zWsh/qvZ0TmMfsfYxhEdWckWt3yT0/6INcS9XmXr3wiFeGMFLtrnZemmkcGB9icQOcFT+PsaWqFp/gwOO/Wi3eb2rbSGrJcCUpR+QEKhao/xfT0Jy60A4i6TFsFrb+3bIfSpIyZ59OZTDQVTdwKTGQT0AooG0OyvwKt+RRLrfKzc/9XcRlE1/p4PEBCHD2jJgRWGW1zO3Zxl0m5SjHb/YHG/w+nJcpzjovXGYtz73DVUQv2ZA0F5A5i4k7pi9v+RSW6M5AMAUQsamUN7nOcbLC7yfWNIQR3DOm6tY2ZSVUiEEg1Z9saqiadAsojoH5xMsdzdkTLMoldlwpBy27k43tZbLuq5bShbz8nJgHxxdCOLlAyWk5Rpxuf/QO8NRZdRzdyjhl5puFEcLZYaB8D9zfoFk5x8ukVxw6zA6ST8Ezg1ePQXXLvCxzm4YpE7YsoaI8jCsPo4UnznW2FRz9jzeSnwkIuxgpIFwipEYtCMKzukCWn6UhSZd62nURzuipj5kwtrQMzu+CVGEwR7vudQoLYvY4h14Skx4pY6aKpzxmjvVGG6btYzQS/8GLdrETZmmEgZfbFALEa35iwFNlttZadAKXIHBnRSbLEN2ZNUh6Fu16y38eOOBIFXviMe3HZS5UGNoZ6gSykTYiaNA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR08MB8470.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(23010399003)(1800799024)(376014)(366016)(10067099003)(6133799003)(22082099003)(18002099003)(4143699003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UEMzbkNGc1E1Nk55Y09PN2ZSV2kyZUZTdmhCSU5yYUx5dElUZUp0M1JqSFJ4?= =?utf-8?B?RUN2VTBPUmdpdDVxNHA4R2tDMG5FcWVHTjhTaW8yTjdPcUt1NXZEaWovRFQ2?= =?utf-8?B?bTA2U3BSSGtTQ3RJWHlYcGJlRDJMREJpdGFWam50TGhCNlZ3dC93ODZVUHlq?= =?utf-8?B?Ti9sQU55K1gzRXRrSnVLOXk2aGNTTGJRR3k0aVlwMEpRUVpKMGNSeWNpbWov?= =?utf-8?B?NW1DOTZBUmtDOGovRExralNBMFBjUHF1YjREdHh6dHJBM0RaRnZDTDRBMHp4?= =?utf-8?B?SnhHVVQvbGZzbUNvWUZoWWczMHVmUmt2SS9MZFVzVDV1Tkc5SFoxd1pOTElS?= =?utf-8?B?RFA5ZGREY2dIc0p5WkRadzdMQUtwRytlYU04eEIwM082dEgwckt6MjBvVGZL?= =?utf-8?B?OGJGR2cwRjl5S0luVWFUQUd2aklsTTdJbkhodGlNYXV6Mm5hWENxY3FkRHNC?= =?utf-8?B?WjJScTdlZWNxZmFGbjBxcFVJalowdW9QTEw4Uis0cXZDdVpIejF2aHNSTTIz?= =?utf-8?B?RzA1dmJ1M3E2YUtxV3p4Q3I5RkdLcUptanJKa2VCMjhGYWxZMlNHTC9EbFA5?= =?utf-8?B?MUE4b29GUmR6dkxHcUxZNG9JNFUvQjYxTVZzV2RSQ3hheHRTSWE4VWQ4Y3gy?= =?utf-8?B?MEY1czNQRVp6UTRpc0t1Z25zUWRqSTVkYmYxRmFwckYybEVmeGhkYkk0YzZC?= =?utf-8?B?RTdlcjlZVVdsWm9OZjJ5aGQvRlFtV2lqTXB2NUFKUklBZmpsYzJzc014Wk9a?= =?utf-8?B?MlpsM0tyYmpZZDNza3BudTVQemxXRnZLNmNZWDJWbVYyeVlWS2tBclRCS0FK?= =?utf-8?B?dTVHcjE3MEllbEpTQlM3QkhUeVFUT2IzOXRzcE52aTh6Y3g4dm5zeVdLRjBL?= =?utf-8?B?d095cjY0MnJXOTVudlE4RXJNYU92a3kvSktOTVI2SWd4MGtGMUp0bVZkL0tK?= =?utf-8?B?elN5NnhHcW5WUGwxQ0tCQWN3WGtDb2Q2VmtyVDRxd0xYUldTTW8zUm1JNTVq?= =?utf-8?B?ZEFIYVVqem1VVE5xOEdnRUU0dEQwS3RIU3RXUW5ZV21RUVkrT04wWjBrcTdG?= =?utf-8?B?YWdieG1sSW12UnNYM1ZyN0UzVmxVUUR4WEZ0N0g5dU9aQkt5dG1Ma0VTMDZB?= =?utf-8?B?ak5ndWI5NzViaDJjSnJkRXR0NFV4QnFKajVudlk4K3kwSWpqbGtWeFI2NnRz?= =?utf-8?B?RzdIa3YxUnZ1cEhVUE9NdElSclZWbTcyODY3U3FDQVF3WkRabUhsaHMzWk1R?= =?utf-8?B?d094SmZRT0Ewa0hIUTF0UWpxWEJvT0FYc1JlR3dwL0oya3hKTUltSjZYajNB?= =?utf-8?B?T2owMnlSQVZQbG5uSVFJTitURzkzZlZ0cHZ5a1pQVUpQVUZyanVsOTkvTCtJ?= =?utf-8?B?Z2Rtdnh5RmtTY0lsMXJqbEtVU0QrM2ZCdXNBTVRZZTRnSEwxWXo1c3ZJeXVV?= =?utf-8?B?YTB5aFRaZHZwdW5XMEY3S3pjM2FiMUloYUNwN3dSNk8zSWVZTU5CWVZVejMz?= =?utf-8?B?TlFXV204T25ZM21ZL3BYekhrZHBneUlQV2JMRmFDb2hPMjNBMGxnbVBZNlNu?= =?utf-8?B?MURiMlhnUjI4a0pYWmpEck9pYW95dnR4VFhQREFjak9rN2FqNFgxMmlRYkpw?= =?utf-8?B?MlE4b0NNZWtXQjZNeEFDdXNhSlJtRi9ub1ovems5ajQzZDFiMG1OZXhvZnVp?= =?utf-8?B?K08wa2xGL3NJMzk1b2NpY0FVbzBpMUVRbVU1c2xqMVA3M2dJK0RDQzZVamZh?= =?utf-8?B?dmNjMExnU25DYWhYT1FVdUc3R3dBVlV2Q3ViZ2trM0NVeVFqanVPQlE4TDla?= =?utf-8?B?U0VCVGs0aCtUWWNmZUo4YzVMZVRMcUxvY0NJSmN2Nk56VnYyWi85a1I3YjFW?= =?utf-8?B?TWV1Z2psK0laWU1vMTVMRnZveTlPOXp4d3ovb1JJQXlZOUpmQ0ZLc2pib3Uy?= =?utf-8?B?UzI0MUdCQlR3R1g4SDlXRWpTOFFhT1NWNEJ6TzFWVDFPeUdkMHBjZlU2Mk15?= =?utf-8?B?dFFQUVFNaVgvQ25NZFNwUGp2RmhiU3hvSUduZ0tDRDJxNCtDTUJzUERMVlVP?= =?utf-8?B?dkpTY3dsMG9mWlI0MTBuTkl5Qk8ycFZacmtDaGhiYkFESUNGNXFDMkoyWXRu?= =?utf-8?B?UkVSaDFqKysyekx6RGJIa3IwdmZPTDJVSXlaVGZCMkhjcit1SHJOSko3ZEFl?= =?utf-8?B?VTB2S3ROdTJpbm10MU10ZXVwOVZIazRrU3FQVmNpcWMyYzJsZzZ0ZnF1aTB5?= =?utf-8?B?NGxBQTk0ejI0ZVlmOWFUMVFXY0JkNWk2ZHdQSUZuMVgvdzZXZ3QxVHRKYXlz?= =?utf-8?B?cHMvSFNGTzljTlJkVDdvTzZScnp1THVwbk5xVmlhdGJIUG0yb3U4MGIxdCtx?= =?utf-8?Q?k7JFlaXbTUqbEnac=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96f1ae86-55ea-4909-0e55-08df0e6205fa X-MS-Exchange-CrossTenant-AuthSource: DU0PR08MB8470.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2026 11:03:48.0925 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yNFJiT3+CcesoSMXZFaUsts/lBf/67YNP4m4R8+tTuzQkd0mkcMBfW/Vx62OxLUgS71cHlU4sXA0Q+RJHmm6lO+CutFY+xVSpTPF2uo3q94= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11494 X-OZ-Fwd: true Cc: devel@openvz.org Subject: Re: [Devel] [PATCH VZ10 2/3] selftests/ve: Add more helpers 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-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org Sashiko review + replies. On 9/7/26 21:14, Vladimir Riabchun wrote: > Some more read/write helpers may be useful. > > Also, add a helper to execute functions in child process with > switched namespaces and cgroup. > > https://virtuozzo.atlassian.net/browse/VSTOR-144504 > > Feature: ve selftests > Signed-off-by: Vladimir Riabchun > --- > tools/testing/selftests/ve/ve_selftest.h | 78 +++++++++++++++++++++++++++++--- > 1 file changed, 72 insertions(+), 6 deletions(-) > > diff --git a/tools/testing/selftests/ve/ve_selftest.h b/tools/testing/selftests/ve/ve_selftest.h > index b3c5bf63f34d..d35fec30c7b4 100644 > --- a/tools/testing/selftests/ve/ve_selftest.h > +++ b/tools/testing/selftests/ve/ve_selftest.h > @@ -163,6 +163,14 @@ static inline int write_file_at(int dirfd, const char *path, const char *val) > return (ret == (int)len) ? 0 : -1; > } > > +static inline int write_u64_at(int dirfd, const char *path, unsigned long long val) > +{ > + char s[20]; > + > + snprintf(s, sizeof(s), "%llu", val); > + return write_file_at(dirfd, path, s); > +} Sashiko says: Could this buffer be too small? A 64-bit unsigned integer can have up to 20 digits. With the null terminator, the buffer s[] might need 21 bytes to avoid truncation. Fair. Will be fixed in v2. > + > static inline int read_file_at(int dirfd, const char *path, char *buf, > size_t buflen) > { > @@ -193,19 +201,31 @@ static inline int read_u64_at(int dirfd, const char *path, > unsigned long long *out) > { > char buf[32] = {0}, *end; > - int fd, ret; > + int ret; > > - fd = openat(dirfd, path, O_RDONLY); > - if (fd < 0) > + ret = read_file_at(dirfd, path, buf, sizeof(buf)); > + if (ret <= 0) > return -1; > > - ret = read(fd, buf, sizeof(buf) - 1); > - close(fd); > + errno = 0; > + *out = strtoull(buf, &end, 10); Sashiko says: If read_file_at() fills the 32-byte buffer completely, does that remove the null terminator? If so, could strtoull() read out of bounds? No, read_file_at is guaranteed to put \0 at the end of buffer. > + if (errno || end == buf) > + return -1; > + return 0; > +} > + > +static inline int read_s32_at(int dirfd, const char *path, > + int *out) > +{ > + char buf[32] = {0}, *end; > + int ret; > + > + ret = read_file_at(dirfd, path, buf, sizeof(buf)); > if (ret <= 0) > return -1; > > errno = 0; > - *out = strtoull(buf, &end, 10); > + *out = strtol(buf, &end, 10); Sashiko says: Does reading 32 bytes into a 32-byte buffer cause a similar out-of-bounds read issue here in read_s32_at() via strtol()? On 64-bit systems, strtol() returns a long. Can this lead to integer truncation when the result is stored in the 32-bit int pointer out? 1. No, same reason as above. 2. Maybe. It's worth adding range sanity check. Will do in v2. > if (errno || end == buf) > return -1; > return 0; > @@ -254,6 +274,52 @@ static inline int enter_cgroup(int cgv2_fd, int ctid) > return ret; > } > > +/* > + * Run function in VE cgroup and new namespaces. > + * > + * Namespaces are provided via unshare_flags. > + * CLONE_NEWVE flag is set by this function. > + * Return values: > + * - 0 if function returns zero > + * - -1 if function returns negative value > + * - 1 if setup fails or function returns positive value > + */ > +static inline int run_in_ve(int cgv2_fd, int ctid, struct namespace_ctx *ctx, > + int flags, int (*fn)(void *), void *arg) > +{ > + int status; > + pid_t pid; > + > + pid = fork(); > + if (pid < 0) { > + fprintf(stderr, "%s: fork failed\n", __func__); > + return 1; > + } > + if (pid == 0) { > + int ret; > + > + if (enter_cgroup(cgv2_fd, ctid) < 0) { > + fprintf(stderr, "%s: enter_cgroup failed\n", __func__); > + _exit(255); > + } > + if (enter_namespaces(ctx, flags) < 0) > + _exit(255); > + > + ret = fn(arg); > + if (ret < 0) > + ret = 1; > + else if (ret > 0) > + ret = 255; > + _exit(ret); > + } > + if (waitpid(pid, &status, 0) < 0 || !WIFEXITED(status) || WEXITSTATUS(status) == 255) > + return 1; > + if (WEXITSTATUS(status)) > + return -1; > + return 0; > + > +} > + Sashiko says: Does the return logic in run_in_ve() mask the root cause of failures? By returning 1 for waitpid failures, signal terminations, and WEXITSTATUS 255, it seems setup failures and process crashes are collapsed into a single value. True. While values still will collapse due to return value truncation, it is worth separating fork/waitpid errors and fn setup errors. Will do this in v2. > /* > * Create a fresh VE cgroup at the first free id at or after @from and unhide > * its ve.* control files. Return the new id, or -1. > -- Best regards, Riabchun Vladimir Linux Kernel Developer, Virtuozzo _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel