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 2046E8017D for ; Fri, 18 Sep 2026 14:37:37 +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 68IEaI4u000407; Fri, 18 Sep 2026 17:36:19 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68IEaI4u000407 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="D6m9TphW" Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68IEaFst000403 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Fri, 18 Sep 2026 17:36:16 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68IEaFst000403 Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-86a74698972so1028639b3a.0 for ; Fri, 18 Sep 2026 07:36:16 -0700 (PDT) X-Gm-Message-State: AFuF++nnKDxJXMLvunDV9sKr5ia3YnciUaAduZ44vaSrCSWmMRiQoYsM 2rgx2nHf6ZZzQ/9w+qOMabNmYaubrAYAZR5ERBHoRxI4Pl8MoFVIL2EF7ojBsyTE/k+t8KWIqi3 6iz1kJqM9Nm9Jr5cAe7M7ugG2e0XkD1yU/6+GwZ2gFnfR9p96iOB6bQ== X-Gm-Gg: AYBFou1khhMpMkpPrHHX/u1qH6m6daxb13mAOaRfM/x0vCQj/fsabQ7EgFiLNdOScA0 0dZL+1ib0J4hss8l1yexdkscmbkAaKSYlqEz6Ri9Jcgu11hiRtI1tn+T0pUOdIyR67fwU7kdRlv fYaz9vA8RoEiwBq+3gYUrT1wJGd4BkDn99o4KkGLNcA6s9W7808kHw2EElF/eovY2lDi4R9ccoR df1dyoHnBYor1Fk5yE4Pdcp8Xi0wl9ju6YIPV8uipZrVuUGzuTEtyb8FQxrh1bf7wJz05QWFNDI zy9bUD65csCrwiXb8l64HvDjssbbnpH/F/jJx0iBKW+lXz8QMBrjgyFTE/4M+PWBKClRqGbHevQ Ksl8vXwthZFQMstyMDgiNZ1x91MRXblI5UWwSkEv0fyZ8g0dy8p6WzCdsYq6vpPevFnCQ8l09J9 qoEGKiJfUHVGp8ZCOWXi88ITWHTD3PTfDcqw== X-Received: by 2002:a05:6a00:464f:b0:84e:e741:174f with SMTP id d2e1a72fcca58-874db6f7494mr4760814b3a.7.1789742174675; Fri, 18 Sep 2026 07:36:14 -0700 (PDT) X-Received: by 2002:a05:6a00:464f:b0:84e:e741:174f with SMTP id d2e1a72fcca58-874db6f7494mr4760784b3a.7.1789742173995; Fri, 18 Sep 2026 07:36:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1789742173; cv=pass; d=google.com; s=arc-20260327; b=K6SrshdDvgwU96LylxKPIr9i0KQX6tKod7KjhRWFxTQw7E1KnKOHVn8fKTFg/oF7X9 eDIsEVct+F5FUKd1wNJxPzpQ2IkYUYBF/PvPkz1Rgtl9o3T8FOknd+In1/LpBfICfRT9 ZOgjZLDYgpbfE17Ctcqwzrlue83Y5ntDAQEjr3sSlIDxy/Phd5S7eHK9o/muANrn2Rfn TAvu86eVB00xjnqLqOuiA921A65dlfUJCRaUHDIRu1Wbi1PyI2ywDgyqaFAG0/JaBAkz 3PgMlck70rcot0ukrlTjp4u1jIqYAtqVoZxI3cTTgb2Se4ntFu93MXhxB4r/F2mhpHIo PWFw== 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=AiwEKMmJ8QEErDSdu22K8d8BZZGrrZTDAOuAHg03p6M=; fh=jWAqq0hGIH/vV+Fnu8VAgTGXWmniroiYKNvjUsnkpNg=; b=XYNn8D1UXoejwDdbX50QH5CVXo7HQmxAf/+6wID1XI3yBpb+onFHgf8jJTwhiAeZu0 x99BDJIoqUVi9TUbwnNQUlWYYjC84xHOwP/PIOvdW3CAXIG4PyzhfvheFduXJHo55140 U0E5v06zD1j5CWLrjiDBTS3wXuzC/KJndAtN95+2nJIMQewmwxNvNwpkZKw9anZshm7m ixvwUTonSP4W1DLmLmY8kUetvOO9EAcRYqpFZJ0YOkoF3FciKMlv5OAbimpkTuaXVY6G COyth/ldrQVpaPjzD0dFOIWuP6auX0gs4VG2qABUAYDdi1vC3YKU9NMnWbFb+PapwCRJ +0bA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=D6m9TphW; 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:c207::3 as permitted sender) smtp.mailfrom=vladimir.riabchun@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com. [2a01:111:f403:c207::3]) by mx.google.com with ESMTPS id d2e1a72fcca58-875de1c8edbsi3507160b3a.87.2026.09.18.07.36.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Sep 2026 07:36:13 -0700 (PDT) Received-SPF: pass (google.com: domain of vladimir.riabchun@virtuozzo.com designates 2a01:111:f403:c207::3 as permitted sender) client-ip=2a01:111:f403:c207::3; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=D6m9TphW; 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:c207::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=l93XmMPH011msd+vKGybAhzZ70I783F5QQwn68zB4UgzCJiF0O9xGCmfZpDHXgsUasNe6Y3NZiAUdXMi5rwhbwAKCFBVw7Te4LCG698EDLfK5HSaqTQDcV94jyCaCoaKlZThRsFxwzozFA1PdzXhxtf2dbGZnsWxiRgKHlC4L7qu7CCuZtwYHCH+LPOtxwvjMpbyF9pfoRfREv++yEwUqb+9y4IG47eMrSG88gkdcfEminheZtm6bD0SQkyWsaMQGYXEl3dSsgjm1hAaB+RqKQkny6y8RMH3RAjWqBgJYZfrvLbXO1HVy6CxZLG4o3XYiGFdLKBVNG5AfcTSyaA4jA== 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=AiwEKMmJ8QEErDSdu22K8d8BZZGrrZTDAOuAHg03p6M=; b=ZmDkX6WG5cuJAR96baM64IVZGfNyiN1QhmaL0936BfjnORmcmveiOokhFpqAPW5xbDKlWMFOmzCXmZ8RvcFSiLr3KDLdZE7uvM6xo1dINf8OvZnNfmg2uMkfVESWHS7XdCCgwNELPycVbrOLltQLBXZTtCEce28CvVsVhiEMExLIrdn2QxGvV9o41IYqrNSZn6UnJHS+KfEpfSF0Ldqc158SU/1aiNVjYHcFaxaNM56Ec2jH1GFdMX06lf4zPNqKNEV0bH2WlP/CM3W2S5/qo6HtOx74R3Jc1Y91kjup+VizI6q+kARGv8ES7EdQyyjXUOm+AZbTGnUM7MKTP6OXhg== 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=AiwEKMmJ8QEErDSdu22K8d8BZZGrrZTDAOuAHg03p6M=; b=D6m9TphWorps7Z9Kvajgosguy+8/tVeTQ+v+I5l8/r8JAUvSOKcmq58uhMoRMyTZmK59VDJt31X1M4T6P0JI07C4POuDHyW9rJ8lUhJgIA1Xy/4E4XKW0zIyJdLTrUbPapZhImxz2T4QjHwoHGzM9S1CSlXbqsqjUBtX3hfqaa0jseAxJWmIfxNbGCPrFRzzcvTsd7XRjQDIofswDGlBVT+p7F4h6Vj5GDBKkvXfHMLunZDMqb4ihGB5OgmZC5S2iP7Mbu/9tYFe1JKw+Ajw0Jum3JG6m11Jnqh/+TKQ7brIEEO1d4rkbSzawVclFhegaheJ0RxpmT78XqOswUIMRg== 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 GVXPR08MB7727.eurprd08.prod.outlook.com (2603:10a6:150:6b::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.13; Fri, 18 Sep 2026 14:36:09 +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.0428.011; Fri, 18 Sep 2026 14:36:09 +0000 Message-ID: <645ef9c7-d64e-4858-a740-cd1f3186b33a@virtuozzo.com> Date: Fri, 18 Sep 2026 16:36:08 +0200 User-Agent: Mozilla Thunderbird To: devel@openvz.org References: <49cc3ffce4a639e79220ce27f0c6bbfc84681d3b.1789491989.git.vladimir.riabchun@virtuozzo.com> Content-Language: en-US From: Vladimir Riabchun In-Reply-To: <49cc3ffce4a639e79220ce27f0c6bbfc84681d3b.1789491989.git.vladimir.riabchun@virtuozzo.com> X-ClientProxiedBy: VIUP296CA0090.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:35c::16) To DU0PR08MB8470.eurprd08.prod.outlook.com (2603:10a6:10:406::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0PR08MB8470:EE_|GVXPR08MB7727:EE_ X-MS-Office365-Filtering-Correlation-Id: f555fd2f-db09-45b0-561d-08df15922e17 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|23010399003|366016|1800799024|6133799003|10067099003|56012099006|4143699003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 2o+AnYtX6IaY8WHneVytwkS+ufPfQ90/LZZVg1V+rUQMOMMkdP6ZQdaV57XNQkxoXgk8rKpm8FcQIKd4wPhqMTToj3EnTEhvHXkSZVKHD6Ny4hZ3UYREqlaA2hRkqVuAT+c9Zi8v5HfZrffSb16dy3WGXzLq/JfWEZdGSiHPUgWRUMLPIf62rw4ZQ9NhECyZ8VJ2epqW2xLA2zgDWkhKg6kEkYl8EefQJZYVWhxR7EDRPVxyRQG1WSkIeAzS/NlE1Ykb7FHZ+fmKqg3LcD0xCNLo/cGPPlYEd7rAjLUpIPW4OJsE6618mAQvSuUA6UEAdlfO7EHhMP8SLMWfzHw5mhQJ3nKtN0DjsjPLwNHso34k06WTXUQCAdHy1L5m9Fz4FDX4tA5tsN7Mrw4cYCHdf/yy3Iu5rsGQ02ws+CDkqu8jEdom8/+1JKN+7bDk/Zk09/mUXSVFV/N6efLJGd8ZOUdZ7Wr9oH7Evayf46/dJza9UGpk/owWoT4Gplo5rHH07MPJQg24ytJKnt+T3r5pYCAT8ghKiDIFFnVFGQxSW6PQvTOj98o/itsxQNsqs4Fdb1PY1GI6CPWyldsQcNeffA/Z0LXiaWDQ1LKBB4sJpSFHOHTqONQJbJq7EkL9HriRR/ldsowAwjjsy4+bxFJmANW6nZhoMrKdAY1LTJirWlw= 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)(376014)(23010399003)(366016)(1800799024)(6133799003)(10067099003)(56012099006)(4143699003)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d0tEVmY1SzNvdVNGZWdWcXRzQzFUblBEb2RzbXR0TjRZaUh1U0tURXZkSnU3?= =?utf-8?B?K2lieC9VN2pGVHlrZmhxbEFabVRReXRrL081L1Y3TGxmVUNBa0FZWjdwNDdD?= =?utf-8?B?UVcwT1FVYUVuYnl6RXJyNHgwSndPRVNFbk1hRGJ3ODdrSFZlU3hhZWhuT2lX?= =?utf-8?B?bTVKR0RDUFdWNi95ZDBQRzVEYTRhY3NxL0lHZlhBWkd6QkJKRWxtMGdYRmNR?= =?utf-8?B?aXIyejZ5cTcwOUUzb2pnL2JFSVlJR0Z2L05PN1I0bzAwRGdDa3krck4zcTZT?= =?utf-8?B?U0FCS0pSMXh4R0c5Rk4remo5OG9Hc1BhenZjdVZ6cDFnN0lZRkVodGI3VWRC?= =?utf-8?B?OVJkcUtzWVd6UWsrUUpIUXZ0bG9HMjZhMkRldXRyYUhYdTl3eWZEK1oyeXRP?= =?utf-8?B?QU52aU5lYk9ySEplaGRQSGpaeG5EYnVidllOdjVBK2k0YkNMd3VZeGVNV0pl?= =?utf-8?B?cDlxUEprd25PYnNzZTdmeUxkRHI5S2NPNml6ZDlxMkJMYXkxL1FWZ2xRTUxn?= =?utf-8?B?Q3pCenpYeWRubDRWT3lrcERSTWZkV0NtNkU3eGFsemlKZkJEWGNhRVdPeGJy?= =?utf-8?B?SkJ2U3JYOXhpcklTQk5mY3h2ejBUL1ZiRnIzNUc3MU41aGxYejNxS0sza25W?= =?utf-8?B?WEdiZE1VZkZXTjdLb21sZWpTdk9qS29GNVBtcmI3cWdpTWFTTXVnajc1eHdp?= =?utf-8?B?bTgvVGJQNmgwMGpOWTBWM0pDWjgwRVJmdlpHalpBWEhOM0paK1lUdmEzci9Q?= =?utf-8?B?WktSb0VJZDlUUzRWQUdqNDZ2NWlNREIzMU4zVXF2Q0UvSkx1TnBtKzByVWF4?= =?utf-8?B?eUFRbHpNZDVhUnpQSG9yUW5QU0R1blJQOEpnNEJSMERtMThNSVoxaEQ5ejA2?= =?utf-8?B?T0drVGoybzMrYmNlc2h6UHA0OVBLMkdSQ3k2QnpPc1lFc3JKTnp5QlpoSXp5?= =?utf-8?B?UmlqanArY240c2JTWjQ2ZzNTc1lEZFZIUWxKNEIva2xkcDBteVhoSlZCU1Vv?= =?utf-8?B?aFJ1cEZFdmRaejhGbHUrOFhxa3diWVlaTG1HZm9iOW9DaVdWZ0JrSG80a3BG?= =?utf-8?B?U0Y4WURFYTY3a2lHSE1vc3JEVWErd0pNc0dZZzUweDFmZmg1cklic2xKMVpF?= =?utf-8?B?VTFxUzZJd240bG1xUHk2NVYyYXFHT3FibzNZQnZWZkxRRVhTcWZ4UVJSQlhN?= =?utf-8?B?L2lSYmpjZXVQbWJOaFJ1ZExnbGx2eEZJNGZ4d3l5VmF5Rk16Tkx6ZUlOdGY0?= =?utf-8?B?UDNMUkNibTVDa2toTVpUc0g4ZWxxdjNWQVNwUDJHVm85bWtiVFN2ZmdCSXBi?= =?utf-8?B?QUVDVTlHNXBiTDFxMmx5UTR1QStkZVhlZnpKdHFpaWZwUjlFSjdrUzc0dVpF?= =?utf-8?B?dXdiS1QvdHNRaFhnaThTazQ5YzV5TjVPMUdaVmxnOUVGU29JTktMNXl2d2FN?= =?utf-8?B?SXEzOW5qK3poY2VlNmdIaU1XSXBtd2FNTjduQlRTRkFRSDh1eG9EV1BGUjZY?= =?utf-8?B?Sk1ZU2RlQzV3OERpTGdrZUhjNXlMZFpTSTBtN05mSEFrOWowZ2luRHAwd2h2?= =?utf-8?B?UXVma1MwVnFUbndFcVBtMWxPVENSSCtYa050VmIwY3pUNk1zblhzYVppVTVH?= =?utf-8?B?Z1F6dXlFQmloYnQvT3lFK0xCY1dCNThwRXBNTGFnNmk1SExyajJBQ2N6Ry85?= =?utf-8?B?ZUdPaDRlcVcraXA0K0svdWhIelphdmNZTHRTTXI5Q0FieGJWeGlIbUJDQ2sz?= =?utf-8?B?L3VWbFlxbWRJUDdva1lMM052MkMrWlA5eDlUV3dVVVJqeStTdXA5RGpyRHYx?= =?utf-8?B?b1hOSHF0WjBFbEhUZkJPVHRxandaSDVRVndmK0tva1BsTmhwSkZOb3RENjFI?= =?utf-8?B?dTZTS0tkK2pKVjlwZUtYRm1QS0o4Vzgvd2NJZHFvczZtK3ErbXkvSUdINFFy?= =?utf-8?B?a2QrenJVWkFuR1lqdEVjWkZLVnZHMkRBT3N3WkI5MWE5TVlLa0JXeStCRGgv?= =?utf-8?B?UDYvY3h4NGpwUFhGVHhnVjlWMk9ZT0RXR2JXeWx0QnBOWnlCRitqK3I0N0FM?= =?utf-8?B?QXhxbFFLOFJ3R2FjSEZkUndzampXekFFWnhPVk1KaS9MSk9LYktYYnRJa1o1?= =?utf-8?B?ZGVzNEJsVDBob2l1MW9Ob1hQOXJJUzZkcWtrRVRoKzNXRVZxNnZoeTFsbzQz?= =?utf-8?B?bllWd1F5ZFlCbU1pSlA5R3lCUFdaMWtFWnBMWkZ4WkhWeHUzci9oUkozOUs1?= =?utf-8?B?emdFaTdYeWdtTlNQMzAyTTZpUmd2eWNRbVg1c3hPSVRZdmpRcUZidis5Snls?= =?utf-8?B?ck1VWlh0dGR0SURUSjdzejJOUFkwWk45SXFIOG5vSzliOHAyYUtndmpScCsr?= =?utf-8?Q?lD1AgoiCuIkOJSVE=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f555fd2f-db09-45b0-561d-08df15922e17 X-MS-Exchange-CrossTenant-AuthSource: DU0PR08MB8470.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2026 14:36:09.3998 (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: fFawx28hIvhathvD/a0GBopbodZnaApCB0ArAQ2FrQA8dxpGQEqow6Fhcd4T7RM6f1O2nuu7eIwp4+ZuWDcu8TUJWnojOr5WeqaoKGw/MFM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB7727 X-OZ-Fwd: true Subject: Re: [Devel] [PATCH VZ10 v9 5/8] ve/ve.c: Generate VE resource accessors using macros 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: On 9/15/26 19:22, Vladimir Riabchun wrote: > We have a bunch of almost identical code, which takes place > and has some unclear variations in it. Unify all resource > getters and setters using macros. > > This changes behavior a little bit: some resources (netns number > for example) required stopped VE. Now such limits could be updated > with a running VE. > Also, some max_nr_write functions didn't verify provided value, > now it is not possible to pass overflowing value. > > https://virtuozzo.atlassian.net/browse/VSTOR-135520 > > Feature: per-ve failcounters > Signed-off-by: Vladimir Riabchun > --- > kernel/ve/ve.c | 209 +++++++++++++------------------------------------ > 1 file changed, 54 insertions(+), 155 deletions(-) > > diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c > index a33e55991e52..5ebdb4b7baa7 100644 > --- a/kernel/ve/ve.c > +++ b/kernel/ve/ve.c > @@ -43,6 +43,39 @@ > #include /* For css_tg() */ > #include "../sched/sched.h" /* For css_tg() */ > > +#define VE_RESOURCE(name) \ > +static u64 ve_##name##_max_nr_read(struct cgroup_subsys_state *css, \ > + struct cftype *cft) \ > +{ \ > + return css_to_ve(css)->name##_max_nr; \ > +} \ > + \ > +static int ve_##name##_max_nr_write(struct cgroup_subsys_state *css, \ > + struct cftype *cft, u64 val) \ > +{ \ > + struct ve_struct *ve = css_to_ve(css); \ > + int delta; \ > + \ > + if (!ve_is_super(get_exec_env())) \ > + return -EPERM; \ > + \ > + if (val > INT_MAX) \ > + return -EOVERFLOW; \ > + \ > + down_write(&ve->op_sem); \ Sashiko says: Does the change to use macros for VE resource management impact the safety of runtime VE modifications? The original ve_netns_max_nr_write function included a check on VE_IS_RUNNING(ve) || ve->ve_nsproxy, which prevented modifications unless these conditions were met. The new macro VE_RESOURCE seems to omit this check, which might lead to inconsistencies if resource limits are altered during VE operation. max values are used only in these helpers to adjust avail number. There is no reason for enforcing stopped VE - only host can update the value anyway. And having the ability to adjust limits without stopping CT seems really useful. This is the anser for the next Sashiko comment: Is the current permission check sufficient in the VE_RESOURCE macro? By checking only ve_is_super(get_exec_env()), it seems you now allow modifications without verifying the VE's actual running state. Would this oversight instate authorizations in inappropriate scenarios where VE should disallow updates? > + delta = val - ve->name##_max_nr; \ Sashiko says: Could the calculation of delta = val - ve->name_max_nr in VE_RESOURCE lead to integer overflow? No, same reasoning as in previous patch. > + ve->name##_max_nr = val; \ > + atomic_add(delta, &ve->name##_avail_nr); \ > + up_write(&ve->op_sem); \ > + return 0; \ > +} \ > + \ > +static s64 ve_##name##_avail_nr_read(struct cgroup_subsys_state *css, \ > + struct cftype *cft) \ > +{ \ > + return atomic_read(&css_to_ve(css)->name##_avail_nr); \ > +} > + > extern struct kmapset_set sysfs_ve_perms_set; > #ifdef CONFIG_PROC_FS > extern struct kmapset_set proc_ve_perms_set; > @@ -1036,121 +1069,10 @@ static int ve_features_write(struct cgroup_subsys_state *css, struct cftype *cft > return 0; > } > > -static u64 ve_netns_max_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return css_to_ve(css)->netns_max_nr; > -} > - > -static int ve_netns_max_nr_write(struct cgroup_subsys_state *css, struct cftype *cft, u64 val) > -{ > - struct ve_struct *ve = css_to_ve(css); > - int delta; > - > - if (!ve_is_super(get_exec_env())) > - return -EPERM; > - > - down_write(&ve->op_sem); > - if (VE_IS_RUNNING(ve) || ve->ve_nsproxy) { > - up_write(&ve->op_sem); > - return -EBUSY; > - } > - delta = val - ve->netns_max_nr; > - ve->netns_max_nr = val; > - atomic_add(delta, &ve->netns_avail_nr); > - up_write(&ve->op_sem); > - return 0; > -} > -static u64 ve_netns_avail_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return atomic_read(&css_to_ve(css)->netns_avail_nr); > -} > - > -static s64 ve_mnt_avail_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return atomic_read(&css_to_ve(css)->mnt_avail_nr); > -} > - > -static u64 ve_mnt_max_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return css_to_ve(css)->mnt_max_nr; > -} > - > -static int ve_mnt_max_nr_write(struct cgroup_subsys_state *css, struct cftype *cft, u64 val) > -{ > - struct ve_struct *ve = css_to_ve(css); > - int delta; > - > - if (!ve_is_super(get_exec_env())) > - return -EPERM; > - > - if (val > INT_MAX) > - return -EOVERFLOW; > - > - down_write(&ve->op_sem); > - delta = val - ve->mnt_max_nr; > - ve->mnt_max_nr = val; > - atomic_add(delta, &ve->mnt_avail_nr); > - up_write(&ve->op_sem); > - return 0; > -} > - > -static u64 ve_netif_max_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return css_to_ve(css)->netif_max_nr; > -} > - > -static int ve_netif_max_nr_write(struct cgroup_subsys_state *css, struct cftype *cft, u64 val) > -{ > - struct ve_struct *ve = css_to_ve(css); > - int delta; > - > - if (!ve_is_super(get_exec_env())) > - return -EPERM; > - > - if (val > INT_MAX) > - return -EOVERFLOW; > - > - down_write(&ve->op_sem); > - delta = val - ve->netif_max_nr; > - ve->netif_max_nr = val; > - atomic_add(delta, &ve->netif_avail_nr); > - up_write(&ve->op_sem); > - return 0; > -} > - > -static s64 ve_netif_avail_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return atomic_read(&css_to_ve(css)->netif_avail_nr); > -} > - > -static u64 ve_bpf_prog_max_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return css_to_ve(css)->bpf_prog_max_nr; > -} > - > -static int ve_bpf_prog_max_nr_write(struct cgroup_subsys_state *css, struct cftype *cft, u64 val) > -{ > - struct ve_struct *ve = css_to_ve(css); > - int delta; > - > - if (!ve_is_super(get_exec_env())) > - return -EPERM; > - > - if (val > INT_MAX) > - return -EOVERFLOW; > - > - down_write(&ve->op_sem); > - delta = val - ve->bpf_prog_max_nr; > - ve->bpf_prog_max_nr = val; > - atomic_add(delta, &ve->bpf_prog_avail_nr); > - up_write(&ve->op_sem); > - return 0; > -} > - > -static s64 ve_bpf_prog_avail_nr_read(struct cgroup_subsys_state *css, struct cftype *cft) > -{ > - return atomic_read(&css_to_ve(css)->bpf_prog_avail_nr); > -} > +VE_RESOURCE(netns); > +VE_RESOURCE(mnt); > +VE_RESOURCE(netif); > +VE_RESOURCE(bpf_prog); > > static int ve_os_release_read(struct seq_file *sf, void *v) > { > @@ -1598,6 +1520,19 @@ static int ve_rpc_kill_write(struct cgroup_subsys_state *css, > return 0; > } > > +/* checkpatch will report it, can't enclose this in parentheses. */ > +#define VE_RESOURCE_CFTYPE(res) \ > +{ \ > + .name = #res "_max_nr", \ > + .flags = CFTYPE_NOT_ON_ROOT, \ > + .read_u64 = ve_##res##_max_nr_read, \ > + .write_u64 = ve_##res##_max_nr_write, \ > +}, \ > +{ \ > + .name = #res "_avail_nr", \ > + .read_s64 = ve_##res##_avail_nr_read, \ > +} > + > static struct cftype ve_cftypes[] = { > > { > @@ -1642,46 +1577,10 @@ static struct cftype ve_cftypes[] = { > .read_u64 = ve_pid_max_read_u64, > .write_u64 = ve_pid_max_write_running_u64, > }, > - { > - .name = "netns_max_nr", > - .flags = CFTYPE_NOT_ON_ROOT, > - .read_u64 = ve_netns_max_nr_read, > - .write_u64 = ve_netns_max_nr_write, > - }, > - { > - .name = "netns_avail_nr", > - .read_u64 = ve_netns_avail_nr_read, > - }, > - { > - .name = "mnt_avail_nr", > - .read_s64 = ve_mnt_avail_nr_read, > - }, > - { > - .name = "mnt_max_nr", > - .flags = CFTYPE_NOT_ON_ROOT, > - .read_u64 = ve_mnt_max_nr_read, > - .write_u64 = ve_mnt_max_nr_write, > - }, > - { > - .name = "netif_max_nr", > - .flags = CFTYPE_NOT_ON_ROOT, > - .read_u64 = ve_netif_max_nr_read, > - .write_u64 = ve_netif_max_nr_write, > - }, > - { > - .name = "netif_avail_nr", > - .read_s64 = ve_netif_avail_nr_read, > - }, > - { > - .name = "bpf_prog_max_nr", > - .flags = CFTYPE_NOT_ON_ROOT, > - .read_u64 = ve_bpf_prog_max_nr_read, > - .write_u64 = ve_bpf_prog_max_nr_write, > - }, > - { > - .name = "bpf_prog_avail_nr", > - .read_s64 = ve_bpf_prog_avail_nr_read, > - }, > + VE_RESOURCE_CFTYPE(netns), > + VE_RESOURCE_CFTYPE(mnt), > + VE_RESOURCE_CFTYPE(netif), > + VE_RESOURCE_CFTYPE(bpf_prog), > { > .name = "os_release", > .max_write_len = __NEW_UTS_LEN + 1, -- Best regards, Riabchun Vladimir Linux Kernel Developer, Virtuozzo _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel