From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id DF48E80E7E for ; Thu, 29 Oct 2026 10:52:09 +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 69TAouOP031636; Thu, 29 Oct 2026 13:50:57 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69TAouOP031636 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="nXwZrR/F" Received: from mail-yx1-f70.google.com (mail-yx1-f70.google.com [74.125.224.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69TAoswx031630 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Thu, 29 Oct 2026 13:50:55 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69TAoswx031630 Received: by mail-yx1-f70.google.com with SMTP id 956f58d0204a3-6768601940bso1036519d50.1 for ; Thu, 29 Oct 2026 03:50:55 -0700 (PDT) X-Gm-Message-State: AFq9FYJAXA8jlIyQKWMcEwQrc4GF0Uge2vSennB0GY7C4MLP1+LPs4K1 pOt7Np0QLo0ObQT4ZlW+c1/IE4ssyidGCmhCCCsR9Qp19LnrGCnvKmIQparitVZWCt1lhJVwpBb MHBXVfwrUiuyzV7ngPvuIizABfU6ZO4Jp0Q75Q2/+RLyJWNUXpD8u7w== X-Gm-Gg: AYBFou0foxDBlCbB5Xmek2Xv/sGwHznoP9lvj+ULXjCTWlZLWyfprCDPCFUMREywuZd +NG3Ic/HH4+PtlB4Cniqs7tSu6AjOZ62vNZRCHr2GFEYvVEhVvfhtkekKhAzqEJVt8LnTST4Aoq 54sFtd7nH3a08oo4rr5vhkTY8OtHyfAFL/4nV/2Ai4NFWGTnnf5SFXFoi+Tq07ZSx+k2la0r+RZ XeEYf+cSTIbeS6p0BLAlaysSlB8XfPcC0ahyLtmhx+OePUurzVV9gVqwUvCPAwZ/83IevNUjXXI CzrpvpN7Cr3lRtwES6EDUexypIPHXSHgTvp4C34/59yucTSuYSB2rovt71sJi5I0bMYs9ugGBQy UNoYTxw6jHe/2QET6iKeWCbCVAyz4U7UCCTALXiQWOHnTfnYyh38EOfvXaKgfqCXqnmUuKmiykg Ljv370i5FmzD6+SuFHFGc3+J6/+B5sfDkL X-Received: by 2002:a05:690e:191a:b0:679:ac65:487b with SMTP id 956f58d0204a3-67a8d396d2dmr1633748d50.15.1793271053862; Thu, 29 Oct 2026 03:50:53 -0700 (PDT) X-Received: by 2002:a05:690e:191a:b0:679:ac65:487b with SMTP id 956f58d0204a3-67a8d396d2dmr1633734d50.15.1793271053240; Thu, 29 Oct 2026 03:50:53 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1793271053; cv=pass; d=google.com; s=arc-20260327; b=fP7QZW7Y37neTpFpRLesGKzeLcau07uWszOXvm+z/+UifyytBLsqhjQSQlXZ7uEpMJ MldmVAKnSC6FXNQv8QNmXPj+L76KUYE0xpmd/aZ/ikwhVIZQ8ad9FIs0aCpjty0g3TeP i45+4t3pd/P0CX3qOBM3cVX1bad9K1544rDFl+Lt0947WRPYLyEcNdTcOeHEHcUxQ8MQ Lbzu8gYlGYk6sHvLyb7H2d0S7yWJ0WSuCOJfnQWk85MYTiDpeWREtG36ujWMkLdO9jxk CXMg7OTmgMwVEN6npeTpMLMX5HVnYYpVHFg0TaC5NBrqwE+sSKKyTDpWidUTNT1oR8J6 oaww== 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=0AQ/yegMWrCga/LLBNP7dgkGg8sdLXtVmiTUwHYDeVU=; fh=emzuRqEHDjV5OZq6nUw7ZCZknny2MEz06wOi4AQASI4=; b=i2ZJ8bq2bSNWuHof9URinF/+rigCcJR47Zx2wLcOZ5WHM+SHd1eK8fngaUXj9XBWFu mdVqjE/8vsgjoktKzoUZNlmulOnu+0R35Gs7ejstqv4iGEOkKWjg9gybW7Em88HfHl+P tbhHsN6rjiPHtDT/RsaTEWOxEKxCFaFPZfZp9BZlK/Dk2r+iegHdUpNXi/Hhtdex6/6g fdIIjwobxI0mLU0DIOXUjpJHcxUYZvvWzTJvY+Lu5p37NveEDRttVUzJGYzjZ8drwQWY SxwicTbQ3qJqi1ObNjLVGio9fc+g4LxRo47uW5GgoofRR/bRZVQNIQ+91WQwlu1/Ow2i 6R9A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="nXwZrR/F"; 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:c200::3 as permitted sender) smtp.mailfrom=vladimir.riabchun@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com. [2a01:111:f403:c200::3]) by mx.google.com with ESMTPS id 956f58d0204a3-67a7a0649ddsi4402753d50.69.2026.10.29.03.50.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Oct 2026 03:50:53 -0700 (PDT) Received-SPF: pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 2a01:111:f403:c200::3 as permitted sender) client-ip=2a01:111:f403:c200::3; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="nXwZrR/F"; 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:c200::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=x3vTK1ymJg0hjsaBZ9Bi/ToonS+ujKqf5W6p8rav4zdMSHA4+iTQVenNwXrPKltnrIRKc4Eof1AuUjhnYwz4rarTaW/DT6OCA7L4065TPqOqXyLfpUFp7WTv2r/NPyuEka+rf04fUqaTp8eMmVSwq2ewyHz0n+C0Zg50xofVfJs4hT9fmLz9gBjcVlCayusLQGi4DtP6+ZF4SYeB4CfSm8nqSy8TAJRMqlgUI0bV/48dh74TmzO3NWcBG+yLgYc9J+SCUJwf0dM5OGHIteEP5kPb8XgWwkjNYzD6oU3jKfdQDFomM99vNIpP6tjxTJgjq/GGQHiXMVhcbE5SMhUbNg== 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=0AQ/yegMWrCga/LLBNP7dgkGg8sdLXtVmiTUwHYDeVU=; b=I9OaNo0y2/HpNJVOWG39K6hpXNbjHMpZsQuaewvnihHcexc30pFTINNtdJ5wOUSle1cy5EqeWW9CHiTEMH5kqBAFQR1NVFnumBSmGRP1e0Smq3fpwtWbsj8cxuwEuForizt3jnFWDddg1CZSVlpBRUyDrTY6+MqxGVpp15T4Lr88dXCyTUOc7tCxeNuRyg1mmZzYQL//UMFIKJyGjbNlDAlgKm8QoCu/oau3GIi0VyJ6mPis5jpOovMxnkO8k1JAv4axVFpQ3nRYNQxTVMk5f8pgthpz97mxTgiCgg2MrL8G/Hnl+PGqoa5F8ffmzZKYbKHnDORclmJkOhWKKXtI5Q== 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=0AQ/yegMWrCga/LLBNP7dgkGg8sdLXtVmiTUwHYDeVU=; b=nXwZrR/FeLInRMiTdwGHHSIpiSC8bMObO93pWhkqehVzVXq/15lZc7hUZpXVSNi7R40kfNbVybz27nKUWlQRFwqv9kBjx/0fJ9PLtGDDQLMW33S3w0LcG6HpyRmRJWiCf+Ypdx1vyLcUL0q+5wirLkNF8XQ2++eF2z0GNZR4J8nbZBm+ElEQyNkfIMOsLsC4cis0FL0XLJji3gh6khCtde/74Q8jT2YpcA1pS5X5rF1IKsvFBBMy4Ge9B3hoAKG/UtzNu66T65TqgXSFPK6eyLo0hfhjCxaXHDpVEFE1NHZ4ctMpgfmhSxeOf0o9AlMNk4usiR4EDGjy24NDH2BIQg== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from MI7PR08MB201474.eurprd08.prod.outlook.com (2603:10a6:290:112::17) by WA4PR08MB843076.eurprd08.prod.outlook.com (2603:10a6:1d0:2a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.22; Thu, 29 Oct 2026 10:50:49 +0000 Received: from MI7PR08MB201474.eurprd08.prod.outlook.com ([fe80::f35b:af88:bd82:6dfa]) by MI7PR08MB201474.eurprd08.prod.outlook.com ([fe80::f35b:af88:bd82:6dfa%3]) with mapi id 15.21.0569.008; Thu, 29 Oct 2026 10:50:49 +0000 Message-ID: Date: Thu, 29 Oct 2026 11:50:48 +0100 User-Agent: Mozilla Thunderbird To: Konstantin Khorenko , ptikhomirov@virtuozzo.com References: <20261029-ct-invalid-nrpoc-v3-0-89d4b0b7d520@virtuozzo.com> <20261029-ct-invalid-nrpoc-v3-2-89d4b0b7d520@virtuozzo.com> <010701a1872e7a0e-b9a72472-754e-4582-8ed8-c4019b63a955-000000@eu-central-1.amazonses.com> Content-Language: en-US From: Vladimir Riabchun In-Reply-To: <010701a1872e7a0e-b9a72472-754e-4582-8ed8-c4019b63a955-000000@eu-central-1.amazonses.com> X-ClientProxiedBy: FR4P281CA0140.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b8::8) To MI7PR08MB201474.eurprd08.prod.outlook.com (2603:10a6:290:112::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MI7PR08MB201474:EE_|WA4PR08MB843076:EE_ X-MS-Office365-Filtering-Correlation-Id: e5f96cf1-be32-4859-b193-08df35aa7e72 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|366016|1800799024|376014|261022105027099003|261021121427099003|261009223027099003|10067099003|56012099006|261026121527099003|6133799003|22082099003|18002099003|4143699003|5023799004|261028144727099003|261026140227099003; X-Microsoft-Antispam-Message-Info: fSXKWkNykkzFg/21XfHNrDBhMqgd+Ta5zJX/2cPl1DzYW7uv7DS9PICc32hj/KK0iRr5lWFKlCLYmr/Xzp4ey+eVGN2aKh16bbDanxesg2sb/27Uxqgl4FTx2zh1Lf/1FYYXwqgRBt/QMKwXiz1nPtvxh7JwyVzJ+fWsZHdBPYFwzkwI+zzSyflpt3Ood4VwKEhmm9w4+DJR5ih7o3Fxb10fMy7SLS6xUgsQmVcEJl7Qdd7T/ogZ1aRYzJfJIK+yZKUuohaWrM2BkcHZU1RPz8j7XymcfhIuM8sX7g+NTcPkKoaYudE5l+aWbdTvRNV/OfaBh2AD9OpufXssxy8RS2s9F54Uv1+eQX81WoOqhgZSZ0pKs54vEecGdLLCXsaq7O0sFB3R+NPzmOTJukI+MlRWAYNolAqE00BO9/lAwQnjtCiUEj4SMtmn1Oz++S53gkQoqpKrSCUTgqAtFXOwwPo7hrvFzsfm2jgUsx+kyMbEkv9pa4NCbX/Zg+ZNdesp94sq5eVKK7lGy2lsTdzh47pHQaRNH5FM7mztrd5POBuJgJ7mBu0ykqHMEPL+N9HNCjJ+Gjpz1p8oiXLiOPw3DmIKRyxTsFE1ZSjUUZS5ppo8zV0CS3ySUBtXxvei4OYU X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MI7PR08MB201474.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(23010399003)(366016)(1800799024)(376014)(261022105027099003)(261021121427099003)(261009223027099003)(10067099003)(56012099006)(261026121527099003)(6133799003)(22082099003)(18002099003)(4143699003)(5023799004)(261028144727099003)(261026140227099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MUlBUnVhYkVlbjFnZ0NOc3dHcVovMkszOGdtT3YwZjA1WmtuMTIvc0hDK2xF?= =?utf-8?B?UFVzVkIrelplU2pReEVMV1JPMDRyakVEVllNRFhOUWY4Q0svWlBxUHgwYmVr?= =?utf-8?B?WGh1cWt1YkZqQlNSMXB4d1MxTEJIZElHd2lZVXFPU01qVlZ4RlQyQmpQR1dx?= =?utf-8?B?SFZlaU8vVGhPc3U4bC9tV3VJbVozNDdvNVR3Zzc4cjZLS3N0SGoxNGhxcTJI?= =?utf-8?B?R3NyRzlzV25reGx6Q3VmUXlYN0ZqTnlTVE9WdXZYZURPYUdsWDhTdWFrWSta?= =?utf-8?B?NGRTZi9PMEcyd3dGTnlzeVR1RVBBTElyUXFQdWplRWYwdlBTMGNZa1VNK3Bs?= =?utf-8?B?blpzWTRVdkR2bFRKRStnTGlMOXovbVBaSHlla3hnQk5YdEdQMGNMM0U2andK?= =?utf-8?B?S2p6SWprNlF5blFZRlBSMjI1MmtmYjhSL0ZoS1pEZUlXcVYxeXpiemxQQ0N2?= =?utf-8?B?Y2twV2xxZEQ4YW1LV0JPaHVhTzQ3RDEwSkVMbHFOcmxza0c0ZE90cDAvOTc1?= =?utf-8?B?WnpUZkwrMkJIWm91bTZyWStPQkNJTmZTVEtVSFI3elIvaTJMS092MVVRVk9S?= =?utf-8?B?NnZyeVlmZzdoWWxoSU01RG0zS0QzU3B2QUdpV0l6ZVZEZG1SRlozNHNTMU5K?= =?utf-8?B?b2xGRlhSSStzTEtxdXcxSHd5b0E5ZlpsOGFDczJjN3luekNLZ3BMVmtlMU9N?= =?utf-8?B?bXZTTDAxV21uMENLR3Uvc2FRamZMM25wYUNWR1VENTJzVWplVGwzYnNqY0VW?= =?utf-8?B?MzZ6anNKSnFkYUpTcy9zT3pCOTJTZ1dVYVF6c3pocXQvZmlhemR6OGR5NGpa?= =?utf-8?B?N0ZISWxzSm5DKzhyZC9IM2N6VmpmWEtqOHFmVC85VldjODFDY2hROEJDQ3hS?= =?utf-8?B?WjdwNUltcXJWVzZod3VPbjJ3eGthcS9DY2tzOWhYcGhDVHNFbXdRZjFjYmZu?= =?utf-8?B?QVI5anp6aEFRQmIyOTZ2YW9tamRpVU5TWXk0b2tKOXRUZEcxd0phMVg3MTN4?= =?utf-8?B?emN1eEZJMXdlOEZ1dlRNTFdROEVEa3FYYzFjeURjZ2tmUG5KWE9NdjVUcGxh?= =?utf-8?B?UHdzNHovMlN5TW1GZHBPV01VKzVlSFQvS2s4UnRhUEVIUU9wMEpmTUlDdERX?= =?utf-8?B?SkEzcDVLSGgxVmgvOTVOSllKNXp6cDdnSjhpcVJqdVJHQjcyMk85ejE0aWk1?= =?utf-8?B?Q1AzS1U4SFFJL0x0bDUvSzcyVyt3cjNhZXUzcjM3UitEU1F4eFplUnpWbndn?= =?utf-8?B?aXpLcy85SXFieFZRQW9rdXFUOFZYcTRLRHRSN1BNenFqVzMrelNYdzdhU0la?= =?utf-8?B?S0NwR1lHNnpHL0RiUGgrMGd6NzNSTHdMdFZ3dThXNGYwRi9GcWI0Uk5VWk92?= =?utf-8?B?QTBVT1kyQlJGV3hCbm01Ti9mTlBWbWNRM0RjTnJTRHVzTHUyTzd6azZrU0sz?= =?utf-8?B?YnMrR3RrZTdaQjR3dVVNNmdqZzB4cndtVFlsTFlCVUZ5OWFoQ20vM0xxSVp2?= =?utf-8?B?VlpaYWx2WjZiUTZJWS9JTDV1SFpFY3I0d0VKc1llWTNvR0g5a2VlWGoxa0p4?= =?utf-8?B?bko5Wk1aYWFLU3hLWkJYQXM2cW4wY3Q4TWN3dDQwRGFHWGc3Z1Z3Y1UwVzRK?= =?utf-8?B?Nm5SZ21yd0V6WkVaYU9RM0lPMkhvK0ZUNUpRU2p2UVZmc085bndyMnJFczRp?= =?utf-8?B?TzM4QWZOVHdWVXlsMVRiV3JsajdLTWJyanFYNTVjUHRRckRXcmVpaG5mRGp6?= =?utf-8?B?b0lRU0NGd2RlSWZQZGlkVlo4eGZ0ek4zcm9xN0NTaWtvc1VTU1cvMGtRY0VN?= =?utf-8?B?L3Z6OWY2OXp1WUNGc0ljajVEZkl4UXMyNUdKRmsrelVMbnhRTDkwTGFSOTA1?= =?utf-8?B?YWNOMnZEM3kyYzdoUjdxRHNSeEFoZHp2UzdHQmtnQWU3cmVZMVV6QVVEeUtE?= =?utf-8?B?QmVWdkhlNDlla0gwZGh2MjF3MXZlRHpvSk9HdGgrYVhjaldvM3ZoRHhVTitk?= =?utf-8?B?Smo4dytTd0NoRU9GK3RrK2dsYzlnTk84cjN5T2lmMGUzRnluNWJWNlZHdHla?= =?utf-8?B?NHhFYVBVbnFvRU1BQTNaK2VienlyVXU1QlNoT2lYTEVXcjRCemRkUEdGeDNt?= =?utf-8?B?WGczNGhzeWJRbzJOUXVGbUZQZFRQKzJoV2J0dzVWSENUc2RRZ0xZZC9CbUkw?= =?utf-8?B?ekJjdUVYSVpqOElQRUtCL1h6TUxzNlNQSHI2aUFtaHFDZVNVTXN6YXdGdU5S?= =?utf-8?B?SmJqNlFSWUNQOExpVjZTK1YzUklacU1BUTIzMHd0NitNeEpUZ1ZjS3NBVXFM?= =?utf-8?B?QWxOUWsxT2NXYTJyQmhiaFNWcU9Tb2JXd0lpZ3FTWU5YL25lUHBoN2VSRUhm?= =?utf-8?Q?K5Cwd2wk8VGob0rk=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5f96cf1-be32-4859-b193-08df35aa7e72 X-MS-Exchange-CrossTenant-AuthSource: MI7PR08MB201474.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2026 10:50:49.2694 (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: 4z2c+xIbFoZ2qX4wPmlkWzy98WI3cfM8QH7z3RzLj9PllKn/ktKphabYwOQFEFPlErCU8CsZE+qWlDQW1P4Af31dS+2/lhJiYf9dVVhX/9o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: WA4PR08MB843076 X-OZ-Fwd: true Cc: devel@openvz.org Subject: Re: [Devel] [PATCH hci-8.1 v3 2/2] selftests: ve: Test sched_getaffinity in VE 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 On 10/29/26 11:22, no-reply@sashiko.virtuozzo.com wrote: > Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: > - [Medium] selftests/ve: get_nth_cpu() bounds loop by sizeof(cpu_set_t) bytes, not CPU_SETSIZE Replied in v2. > - [Medium] selftests/ve: expected CT CPU count taken from caller's affinity, not CT cpuset This is not a CT. This test is a root-only, no need for complications. > - [Low] selftests/ve: FIXTURE_SETUP leaks CT cgroup if prepare_namespaces() ASSERT fails This is fine IMO. With skip it was correct to move it to the top. Here if something fails we should leave all resources, to simplify debugging. > -- > > commit 55fc819ea7f7954caf6a8e968697a2cc48fd1982 > Author: Vladimir Riabchun > > selftests: ve: Test sched_getaffinity in VE > > This adds a selftest that checks sched_getaffinity() inside a VE respects > both the cgroup cpuset and the cpu.nr_cpus limit. It adds three test cases > and registers the binary in the Makefile and .gitignore. > > Link: https://virtuozzo.atlassian.net/browse/VSTOR-141682 > >> diff --git a/tools/testing/selftests/ve/ve_sched_getaffinity_test.c b/tools/testing/selftests/ve/ve_sched_getaffinity_test.c >> new file mode 100644 >> index 000000000000..98acc246ede0 >> --- /dev/null >> +++ b/tools/testing/selftests/ve/ve_sched_getaffinity_test.c > > [ ... ] > >> +static int get_nth_cpu(cpu_set_t *mask, int n) >> +{ >> + int i; >> + >> + for (i = 0; i < sizeof(*mask); i++) { >> + if (!CPU_ISSET(i, mask) || --n) >> + continue; >> + >> + return i; >> + } >> + return -1; >> +} > > [Severity: Medium] > Is the loop bound in get_nth_cpu() correct? sizeof(*mask) is the size of > cpu_set_t in bytes (128), while CPU_ISSET() takes a bit index and the set > holds CPU_SETSIZE (1024) bits: > > for (i = 0; i < sizeof(*mask); i++) { > if (!CPU_ISSET(i, mask) || --n) > > The scan stops at CPU 127. If the 2nd or 3rd allowed CPU in orig_cpuset > is numbered 128 or higher (for example under taskset, a restricted cpuset, > or a large sparse host), get_nth_cpu() returns -1. > > update_cg_cpuset then fails ASSERT_GE(cpu_leave, 0), and limits_interaction > fails ASSERT_TRUE(c1 >= 0 && c3 >= 0), without sched_getaffinity() in the > VE being exercised. > > The loop also compares a signed int with a size_t. Should the bound be > CPU_SETSIZE? > >> +FIXTURE_SETUP(ve_getaff_test) >> +{ >> + ASSERT_EQ(sched_getaffinity(getpid(), sizeof(cpu_set_t), &self->orig_cpuset), 0); >> + self->orig_cpucount = CPU_COUNT(&self->orig_cpuset); > > [Severity: Medium] > Is orig_cpucount the right expected value for the CT? It is taken from the > runner's own affinity mask, not from the CT cgroup's effective cpuset. > > In getaffinity_ve(), run_in_ve() forks a child that does: > > enter_cgroup(cgv2_fd, ctid); > enter_namespaces(ctx, flags); > ret = fn(arg); > > Nothing in the child restores the parent's affinity after joining the > cgroup. So the mask that __getaffinity_ve() reports derives from the CT > cgroup's cpuset, which is inherited from the parent cgroup. > > I did not read cpuset_attach() in this tree. From memory of mainline, it > resets cpus_mask to the cgroup's effective_cpus on attach, but that is > unverified. > > If the runner was restricted, for example with taskset -c 0,1 on a host > with more CPUs, the CT may report more CPUs than orig_cpucount. Then this > fails in update_cg_cpuset, nr_proc_bound and limits_interaction: > > ASSERT_TRUE(check_cpumask_is_prefix(&in_ve, self->orig_cpucount)); > > Would it be better to derive the expected count from the CT cgroup's > effective cpuset, or to skip when the two differ? > > Separately, sched_getaffinity() with a fixed sizeof(cpu_set_t) returns > EINVAL when nr_cpu_ids is greater than 1024. FIXTURE_SETUP asserts on that > call rather than skipping. > > [ ... ] > >> + self->ctid = make_ve(self->cgv2_fd, CTID_MIN); >> + ASSERT_GE(self->ctid, 0); >> + >> + ASSERT_EQ(prepare_namespaces(&self->ns_ctx, CLONE_NEWVE, >> + self->cgv2_fd, self->ctid), 0); >> +} > > [Severity: Low] > Can this leak the CT cgroup created by make_ve()? If prepare_namespaces() > fails, the ASSERT_EQ() aborts FIXTURE_SETUP before setup_completed is set. > > In kselftest_harness.h, __TEST_F_IMPL only calls the teardown when > _metadata->setup_completed is true: > > if (_metadata->setup_completed && !fixture_name##_teardown_parent && \ > __sync_bool_compare_and_swap(teardown, false, true)) \ > fixture_name##_teardown(_metadata, self, variant->data); \ > > So FIXTURE_TEARDOWN(ve_getaff_test) never runs. close_namespace_fds(), > destroy_ve() and close(cgv2_fd) are all skipped. > > I inferred, but did not verify in this tree, that the cgroup persists after > the process exits. If so, each leaked cgroup keeps the first free id in > the CTID_MIN..CTID_MAX range that make_ve() scans: > > for (id = from; id < CTID_MAX; id++) { > snprintf(name, sizeof(name), "%d", id); > if (faccessat(cgv2_fd, name, F_OK, 0) != 0 && errno == ENOENT) > break; > } > > This only happens on a failure path. The same pattern exists in other ve > selftests such as ve_ns_owner_test and ve_perms_test, so this patch adds > another instance rather than a new class of problem. > > Could the cleanup be done on that failure path, for example by destroying > the CT before asserting? > -- Best regards, Riabchun Vladimir Linux Kernel Developer, Virtuozzo _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel