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 98C528045D for ; Sun, 25 Oct 2026 21:57:13 +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 69PLu0Dx030753; Mon, 26 Oct 2026 00:56:00 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69PLu0Dx030753 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="CRGIIvE7" Received: from mail-yx1-f69.google.com (mail-yx1-f69.google.com [74.125.224.69]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69PLtvUp030749 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Mon, 26 Oct 2026 00:55:58 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69PLtvUp030749 Received: by mail-yx1-f69.google.com with SMTP id 956f58d0204a3-67532014b2fso4206602d50.2 for ; Sun, 25 Oct 2026 14:55:58 -0700 (PDT) X-Forwarded-Encrypted: i=3; AKwUvBw41UV2uf+oTUjySeyHi+SPZ2SqA2e6ct0+V0XVwtltiw5K15xvtGYB+s56giZ0xlwkOIIHrw==@openvz.org X-Gm-Message-State: AFq9FYLcm5YZ9nXrDmcZA/iMqduH0q/xsKP0lDI9bZW8S0Cl2TmzAUkE JFzZvE4oOkE/sCL09c6blp89FsHXa6Ypp8/Rnp//7UHxH1cmAD1h03JBsxqyJAlaisYsaOZUkD3 sY0fXLiKP8HlOF5UGweArsyUWXx1Oni37dtptoSWWJ3fKc3FSJBZFAg== X-Gm-Gg: AYBFou3+krjyQQROGDJ4X8PdvLnlJf8qEP9Q9QxnxWwBOvN323b1po9/N9Hykcq2Aan dE/piNqFS6w3FpSJIOXXKK0mkoopszo8vta6YWMpx5cD40pUmbbZHG0Z4+pG1pc2oqslimeUcqx qPckLF7BdFlzhIxIN6y8dUV3jXzF60lhvbxh0tJjS7SNCH9gbBnIQeqsb5HBU08clotDv1P3a+/ hmjwFt9xoTwuhPXIuBy8po46VaSCcdmeY7UF7MWIM3mJ0nJgfkUSRWBupHIbIjHwgdFAKqasZI7 PlnTcBJEnQmUUu7nGV6WwuTc1cSoUpyVUL2/IatGmnFq5CyHg4AJcSCPakbYp2p3fT/ECqb81M1 8EjgkTdTj4rlCoCBqiloqz/zdIgwrnqbuCIL7PmOsumC6EJQ7fnbVtSz+yRq8NXofWPKNnf5Yrr AWNsP0zaLijkRZihl0446oDqgiP9Mi0M78E23P X-Received: by 2002:a05:690e:bc6:b0:679:b274:89a8 with SMTP id 956f58d0204a3-67a4539c240mr4003325d50.27.1792965357484; Sun, 25 Oct 2026 14:55:57 -0700 (PDT) X-Received: by 2002:a05:690e:bc6:b0:679:b274:89a8 with SMTP id 956f58d0204a3-67a4539c240mr4003309d50.27.1792965356936; Sun, 25 Oct 2026 14:55:56 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1792965356; cv=pass; d=google.com; s=arc-20260327; b=e7kjwIZ12yMtkwNtqUye1BngBUxs+yK1mI6ILV+qYhR7KxibxSww7rR6vVTVhXZ/Jk 0ulslmWYfdc4Tw9Rym9cdrzCkIqgFfzb80F4u7Y2LgZQ0btZZw25HowYZ1soa7Ie6lCq bMCoYoFqmmm9HT7fbGTC1f8EPGi3xqotmQpf2nwlKfGTTNS5HG8zEJiQlgEj6veL+RDF rmjZ4LylAGAEgptpOsimC55yNLG7WpO63dyMK9jAMAmpVOarKb2VPfW4WmOohfNKalRL WvDZRxDA0GyrmSe1r2UZrd7SzOCnKMFL9lJyF6FqpNsvMnPnw6WI7dFIrdBxewJWebq8 rTww== 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=HnewJPpDTow2VS4bs9YkCvKmYvFtcyawjv4KyrHtnPU=; fh=46KtoUV9L/zN/4RJCfinxgMF1LLYECxFm1JwJQyOZKI=; b=PIhgLgssO1zQOUT9cyhgWWnC1HwVZEhDQ90MN3BOoLNtRoTGS5FO4PlgFg5BXF+TCD l4IzrUJmTSN+gA77zhtWyVikcru8nKtGU8sLzZLAdZHmfDyMRh4X7Iec7mJHiDqjoHJp dEyx7IVwMEpcfEThd1sVpocq+ymNVQMrToKUp1NhFb8CGm2sgwW8CcRKM6LRt5OJfrpP 76fIOIPLvziRmWPo7QsGS/Rg+7lwxxNVm99HTudeYOxuqXPq+2QoKBXoEt3D//yYRnOa 21KuV055PUK/OLBFWSjVU75R6fnFBQ0XpX6DmjLKm8bhtz0047C2C8OxS2AnRaU33MIG d3TA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=CRGIIvE7; 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 andrey.zhadchenko@virtuozzo.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=andrey.zhadchenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com. [2a01:111:f403:c20a::7]) by mx.google.com with ESMTPS id 956f58d0204a3-67a45f26f0fsi3965781d50.6.2026.10.25.14.55.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 14:55:56 -0700 (PDT) Received-SPF: pass (google.com: domain of andrey.zhadchenko@virtuozzo.com designates 2a01:111:f403:c20a::7 as permitted sender) client-ip=2a01:111:f403:c20a::7; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=CRGIIvE7; 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 andrey.zhadchenko@virtuozzo.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=andrey.zhadchenko@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=Qce1em7on3+LQwEp3+9SLQbZ5qwb6KqWe1K+zdGSZPBMeeqmWmertCFgHvY0DTzamw1DYJ+TIxv2gN6cy/a1O1NUPDmA1S9FgycLBOf9Yq2d/Rus00LCTF82ksIo7ofzWgHY0zNrtxZpiBG1eVEnHeH2ZaEEjjkBLl3T4UdA3UJeOQjx961LhUh3PYvi0Tjfx2LtRz/WByadeDek3Cn7yE/QR0Us/5PJS1E4QtM5Qnzzx7cNJi1HA+EpcCwp2doJX1dXvECDp1n3VLA8kFDqKDUnK6CRRhwXKfpxuyalmGjby3cxI+Xki1uT/TZPzj/QCC0bkmRwcO1aFUxm7WNJ4g== 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=HnewJPpDTow2VS4bs9YkCvKmYvFtcyawjv4KyrHtnPU=; b=zGYMAd6Wp6MSTMgxR966aGBSUPmJY90xI7ZjgGkhUDpFIJXabgd3OaoVD9RFtb0CscWEIWdOoIbQ9XyfrKElLl25D6jHC5o9Ogt1LZpZ/39H5jkvHsQJnbYWkxZnJHBPz0YPXz7jwJqeBh1aogPMxISkpzxpWaURSXr5KjevHhFzS9FVdguGgcjuiFbsdD9Wd/Cm/80C/BoN8mVcJVgQwotN/N8+CyM+c5ZLN0TwVvs9BpDmKmagEy124pZ4s4AEYMRIBQVypftw0bWkWIC8nA+bRNepMmpPYADtE8Ymj4IZ9EBXjt9KXVL4msiVXO8XYppa1a2YjpfIhdpmiMtEng== 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=HnewJPpDTow2VS4bs9YkCvKmYvFtcyawjv4KyrHtnPU=; b=CRGIIvE71YIYnnq6d6Xl5ws+locEQw9EjPlb6ck5Vn8s8rlf0W9qFPgbtkShV03CqU/YuHwcTbDTlTuuSxY0laAGGlSy8tqqLq7dfhYOm1smdjQeiGVnTts+xGomOmEV9OazqhFpHvxIGcUHZ69j4d4FZJU8EPVv+lNufebRlEk3pUtddQups9vd1qHIpGXgzBDXQSj00us+8QmYDhcCWDjV/P9gXlLNrupHGkD9LMDC7uWrw5VHNQtCV6y2SP1At++TRKGR8XFrXStWlHp5nwknSwAx9Rpy3Jh2zydnVH4cODmVpHW8H5/DBz9mh/rfO4AfxSYv8AKFEqWB45hoeg== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from PA4PR08MB6061.eurprd08.prod.outlook.com (2603:10a6:102:e9::13) by VI0PR08MB10743.eurprd08.prod.outlook.com (2603:10a6:800:205::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.18; Sun, 25 Oct 2026 21:55:53 +0000 Received: from PA4PR08MB6061.eurprd08.prod.outlook.com ([fe80::c3bf:e107:b1d2:6a00]) by PA4PR08MB6061.eurprd08.prod.outlook.com ([fe80::c3bf:e107:b1d2:6a00%3]) with mapi id 15.21.0546.021; Sun, 25 Oct 2026 21:55:53 +0000 Message-ID: <07b48eb8-0dd1-42fa-a2f3-14a2c3bd4423@virtuozzo.com> Date: Sun, 25 Oct 2026 22:55:52 +0100 User-Agent: Mozilla Thunderbird To: Alexander Ivanov References: <20261009142316.801288-1-alexander.ivanov@virtuozzo.com> Content-Language: en-US From: Andrey Zhadchenko In-Reply-To: <20261009142316.801288-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: ZR0P278CA0160.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::18) To PA4PR08MB6061.eurprd08.prod.outlook.com (2603:10a6:102:e9::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR08MB6061:EE_|VI0PR08MB10743:EE_ X-MS-Office365-Filtering-Correlation-Id: 4765bbf6-4312-4494-50f8-08df32e2bd53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|376014|366016|1800799024|18002099003|22082099003|10067099003|56012099006|261009223027099003|261021123027099003|261021121427099003; X-Microsoft-Antispam-Message-Info: 9dsxARl0xZr3+WgkeDqziAsm5UrLTzfw+Bg0K0MUUooqDcD+YzS86aZHsXT+/FENaFD/zsptg4FFTg5J7W8p926e4y1J4fk/6wf9n3Qg5YUnZoDHO8j1J+zrEB0r2I+dAXsOzq+nX7NREfqvaKDkDKcv/hNZ3g3RrtDmeITIgTS/+IRQB7ld3AnoMf5jvmh2nlYSHp9l14t+2ceUpQhQ+2jdD/CT/YuSUsW09lQlP0V81CX8OphM2oi7fhR5aK8nIveLqH0wlyXEJ+gf1hxlvYPC7o1RQKUjvVNWt7BWfs0NsZGWIiYv416kf3liQ364Eil6YBTKk2ut23dvEVaJoRfZGvF8pzEo5VncW8OtwSVDhFZB32ERPSyVYhb3XIZ20IdtMskQX8Q9xHeG4KEsjj3p2rFwqeiX1NQQ6lpE/9UnfoN15Av6eIW7sObC9WB6YNqqgin9pNPQeBOHDQBgIoY9uchWG96lXptICYqAztT9Q4+RTIB8sEPoGkbXEGEfZNfNKZMogVptwviGBVoYwk3Mza8d4uoFc8ywxGiIlneiNoDtdLUI/rtKE+ws0gAjVWE3APM2zThDPX37GFrQrHzTY+YrI+0rt8zG0O49eXgYj/aG49KaYfhbg67vuw6r X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB6061.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(23010399003)(376014)(366016)(1800799024)(18002099003)(22082099003)(10067099003)(56012099006)(261009223027099003)(261021123027099003)(261021121427099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eVJDSVFUUEVHSENBTjhJK2xESjRSVkFIMmFqSk4vNG43WTNmOFR2dkZ5MVZj?= =?utf-8?B?c0M5dFZza0RSZG1KVGg0dlNENmlEMGRQcGplM01XbmdxdnphbnprTE5QSmxz?= =?utf-8?B?TGUrbEx2NUNxODQwcTdOK0JuaXRwaDRWdWp2YXM3UVNxT1Y0cXRYemFrbzVJ?= =?utf-8?B?UFkra0VxaTFiU1BnNGxwaVZCeXVJL0JnemJvd0RHSlpacWM0MzU1ZWhqb2t3?= =?utf-8?B?b0NzejZxQkY2alBIeFhrdkFDanlFRjQ2Z3JoVGM1VlRQMjJWY1o2c2dtdEc0?= =?utf-8?B?NHR2UjdpbkxKL2o4Q091aWxlSld1TUZmNys5WWFLWFFsbnVXU2QrNHFuMCtt?= =?utf-8?B?czRuTktLY1RYdml4ZVdQQ0J5cjROL2xPSW1OaTIzeXI1bUpOejk2QkV2VWEv?= =?utf-8?B?MnBsR2FETGd4SFhJWFpqZGxWWWRwYjJDRnlVaVBQZitXYTMzUUphOFc2RER4?= =?utf-8?B?NEdOUmZTRkpsS1F0NFZUOGJzRHYyZVdGdm1HK0dZUFJNUndUVjhvQUpuZmpL?= =?utf-8?B?dkRxckVUTG02bS9LZTU1dWV5QTh4emlJZGNEaHZ6dE9xenVjaElhQ01IU2Q3?= =?utf-8?B?WkxEQVlsdVRmWmQyTGVJRlY2TGJkeU1jY1MrMVNORmVYNG5BZytyUUpVMURE?= =?utf-8?B?TlVYQnYxVUYwSFk0dnZzSkk2NzhlcjAzbHJiMExVd1BEbDh4cG1jK2lCZ2JX?= =?utf-8?B?QWZwU1p2TzcwYlpWQnlYamdaWlV4UkdIeGNJZHpia0llYXcwSXVjSzFjYVhP?= =?utf-8?B?OEVBVWlTWENjZUFvVFJRbTVkc0lyOHBBUm1vMHF4blBZdWs1K25OMU9IS0Zu?= =?utf-8?B?T3BVdW1XN2R3bk5qcVVQK0szNTR2TjRUcEF6enlBbThneFJmT2prZ21YcjBL?= =?utf-8?B?UkppRkx3MERqRDVtTDJHMmFTcjhudkp1R2hncW9BMlM1Y1QxQlBSUUx2MEd0?= =?utf-8?B?SGN6VXNCbVNiSkFCR2dHSU9ySjA3cU5MUjRQOVl0R0EzbWNLWS9PT1VSU05W?= =?utf-8?B?U2RPemN4Q2U4bGlKWVFSbVB2cTYxdWpTZE5NQW8vemJOamtHSjcvdTFvWmdQ?= =?utf-8?B?dzNaRUwyMk9PQU4rY2VCRW5ETE1zMS9EMVZiVVZDN3FQd25IK204WnBsdTR5?= =?utf-8?B?QXMrTnQ5VXY0NmEvSW9WUE5sWVJpVkwvTkRERGRyOFNSNWw0YUZYcFY3Z3ZZ?= =?utf-8?B?b0txNHpleU1CZGFXUHZ5YzR2Q1F3NjQ2VnBDbU9ZaHZrMHpMZFRCZjN4cnl2?= =?utf-8?B?NzNPakxZcHMybGt4RzRhQ2VYZGRzcWg0bWdKWVRpbFB0S01YWHppcW1BekdR?= =?utf-8?B?OUl6RjljNWVsQVJEUXVsTktYRDhKS1RDdDQ2V2cvdmxWWDd3ZzJNM09pdk0v?= =?utf-8?B?c2Q5VGdjbWt6RmZnbDliWVRCVVpMSTIzSGJnT0pBOG5vSEllMm5WZ3EvbTBq?= =?utf-8?B?anhtcXFvMmdseEoyMWpIZHB1Z2o0bGNrWmRBblpmc0Z0NG9CRW50VnE3V281?= =?utf-8?B?SG1MdXk5ZWVMZlV0NnFFdC95NjFYSE0vR2hXdEhPNVZ3MVcvNXVqTEJZeG1G?= =?utf-8?B?V1FBV2Q5U3psRWF2QThiM3lERi9nZzBSUE9zOXdNZ0cwVXZyc0xyV3Z4WnJr?= =?utf-8?B?YzFsUDdicHhERldlcGdIOU5iWHU4a2t2WWVrdzc2U1NGWDRxRjhDeVVxQXh3?= =?utf-8?B?RTc3S28xMThNOEU4Mm5IMlc4enh6YXEvRWhjVmc3S3MvTDlncnp5bkd5bU5E?= =?utf-8?B?cEhFMWdmbkkyZW1oK0w3RnV6emtCZ05RUkR6bTUvUGNDMThhN2w4a0JVWGxY?= =?utf-8?B?aXhiWWU1ZUZDaldUUGVENGVFOEMyUC9CUFNFUDU1Z1pYbGlIV0xzWklkM1RR?= =?utf-8?B?ZGxRSzR5aWxwUGVsMElTeVN4T1VwMG5QNm9yRnloMmJlU3h0MmsvenpXamg2?= =?utf-8?B?WUJoWjBnWUp3ai9ZYis3N2hFS1prNlR0Ti84YUttZ2FkTk5XbVdPa0FyNWdF?= =?utf-8?B?RXJSY0JTRlcvTkViNjZkdEdOWm5WN2w4TjlBcnRTQUJlbWJSMjdlYW1YblpV?= =?utf-8?B?SXVHVVBpSU5UTXp1dGFzM3VBL3ZlZFpzdnF3eDFFblhzK3ZsUU5KVVlyZkNz?= =?utf-8?B?aGJFd210dWF4KzVKMjcraFAyWUFYYmdaaXZQZ3p0SXE1ZHBOYytoWGJTSERL?= =?utf-8?B?alIvUnllM3pHVGNWMU5OYkNiVmREWjA3YS8zVjZYdm9QOXdHck82ZmNGN3lC?= =?utf-8?B?aStWVDRMNFUvOUQvNjFLMHZBdXM0UGdPZ0tZSDk4ZW9NWVh3TEtzeXVuZEpP?= =?utf-8?B?MkNkVFFKUnV1UEdnczJBT1pSNS85OUdzRDZtK3MzNTFYalhkZThpUGsydzlq?= =?utf-8?Q?fFenbjpdI1D4juig=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4765bbf6-4312-4494-50f8-08df32e2bd53 X-MS-Exchange-CrossTenant-AuthSource: PA4PR08MB6061.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2026 21:55:53.1825 (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: n6QqoHCO/Gj+zYBay8i4f8/tpXD0mB4ua3jNpXEcmpGEeXUsgGFHvBsjGtrEmGPoAXAl3tla1LfNxZI1PKUd6F//L4k0tAMzaeJkPO8CLTQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10743 X-OZ-Fwd: true Cc: devel@openvz.org Subject: Re: [Devel] [PATCH hci-8.1] dm-ploop: fix u32 overflow of the delta BAT byte size 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 Reviewed-by: Andrey Zhadchenko On 10/9/26 16:23, Alexander Ivanov wrote: > The byte size of header and BAT, (PLOOP_MAP_OFFSET + m_Size) * > sizeof(map_index_t), is computed in u32 in several places. It wraps for > m_Size >= 2^30 - PLOOP_MAP_OFFSET, which a delta with small clusters > may legally have. > > Compute the size in u64 and use ploop_nr_bat_clusters() for the number > of BAT clusters everywhere. > > Reject a header or a resize whose hb_nr exceeds PLOOP_MAX_HB_NR, > which also keeps DIV_ROUND_UP(hb_nr, 8) and the bitmap size in bits > from wrapping. > > https://virtuozzo.atlassian.net/browse/VSTOR-148171 > Feature: dm-ploop: ploop target driver > Signed-off-by: Alexander Ivanov > --- > drivers/md/dm-ploop-bat.c | 23 ++++++++++++----------- > drivers/md/dm-ploop-cmd.c | 19 +++++++++---------- > drivers/md/dm-ploop.h | 6 ++++-- > 3 files changed, 25 insertions(+), 23 deletions(-) > > diff --git a/drivers/md/dm-ploop-bat.c b/drivers/md/dm-ploop-bat.c > index a7849de8aaa6..5ddb8ffdff07 100644 > --- a/drivers/md/dm-ploop-bat.c > +++ b/drivers/md/dm-ploop-bat.c > @@ -189,7 +189,6 @@ int ploop_setup_metadata(struct ploop *ploop, struct page *page) > struct ploop_pvd_header *m_hdr = NULL; > u32 bat_clusters, offset_clusters; > struct dm_target *ti = ploop->ti; > - unsigned long size; > int ret; > > m_hdr = kmap(page); > @@ -213,8 +212,11 @@ int ploop_setup_metadata(struct ploop *ploop, struct page *page) > ploop->nr_bat_entries = le32_to_cpu(m_hdr->m_Size); > > /* Header and BAT-occupied clusters at start of file */ > - size = (PLOOP_MAP_OFFSET + ploop->nr_bat_entries) * sizeof(map_index_t); > - bat_clusters = DIV_ROUND_UP(size, CLU_SIZE(ploop)); > + bat_clusters = ploop_nr_bat_clusters(ploop, ploop->nr_bat_entries); > + if ((u64)bat_clusters + ploop->nr_bat_entries > PLOOP_MAX_HB_NR) { > + PL_ERR("Too large BAT"); > + goto out; > + } > > /* Clusters from start of file to first data block */ > offset_clusters = SEC_TO_CLU(ploop, le32_to_cpu(m_hdr->m_FirstBlockOffset)); > @@ -242,7 +244,7 @@ static int ploop_delta_check_header(struct ploop *ploop, > struct rb_root *md_root, > u32 *delta_nr_be_ret) > { > - u32 bytes, delta_nr_be, offset_clusters, bat_clusters; > + u32 delta_nr_be, offset_clusters, bat_clusters; > struct md_page *md0 = ploop_md_first_entry(md_root); > struct ploop_pvd_header *d_hdr; > int ret = -EPROTO; > @@ -257,8 +259,7 @@ static int ploop_delta_check_header(struct ploop *ploop, > > delta_nr_be = le32_to_cpu(d_hdr->m_Size); > offset_clusters = SEC_TO_CLU(ploop, le32_to_cpu(d_hdr->m_FirstBlockOffset)); > - bytes = (PLOOP_MAP_OFFSET + delta_nr_be) * sizeof(map_index_t); > - bat_clusters = DIV_ROUND_UP(bytes, CLU_SIZE(ploop)); > + bat_clusters = ploop_nr_bat_clusters(ploop, delta_nr_be); > > if (delta_nr_be > ploop->nr_bat_entries || > bat_clusters != offset_clusters) > @@ -274,13 +275,12 @@ ALLOW_ERROR_INJECTION(ploop_delta_check_header, ERRNO); > static int ploop_convert_bat_entries(struct ploop *ploop, struct rb_root *md_root, > u32 nr_be, u32 nr_pages, loff_t file_size) > { > - u32 i, end, bytes, bat_clusters, page_id, *bat_entries, max_file_clu; > + u32 i, end, bat_clusters, page_id, *bat_entries, max_file_clu; > struct rb_node *node; > struct md_page *md; > int ret = 0; > > - bytes = (PLOOP_MAP_OFFSET + nr_be) * sizeof(map_index_t); > - bat_clusters = DIV_ROUND_UP(bytes, CLU_SIZE(ploop)); > + bat_clusters = ploop_nr_bat_clusters(ploop, nr_be); > max_file_clu = file_size / CLU_SIZE(ploop) - 1; > > page_id = 0; > @@ -311,12 +311,13 @@ int ploop_read_delta_metadata(struct ploop *ploop, struct file *file, > struct rb_root *md_root, u32 *delta_nr_be_ret) > { > struct bio_vec bvec_on_stack, *bvec = &bvec_on_stack; > - u32 i, size, delta_nr_be, nr_segs; > + u32 i, delta_nr_be, nr_segs; > loff_t pos, file_size; > struct iov_iter iter; > struct rb_node *node; > struct md_page *md; > ssize_t len; > + u64 size; > int ret; > > ret = -ENOMEM; > @@ -339,7 +340,7 @@ int ploop_read_delta_metadata(struct ploop *ploop, struct file *file, > if (ret) > goto out; > > - size = (PLOOP_MAP_OFFSET + delta_nr_be) * sizeof(map_index_t); > + size = ((u64)delta_nr_be + PLOOP_MAP_OFFSET) * sizeof(map_index_t); > size = ALIGN(size, PAGE_SIZE); /* file may be open as direct */ > nr_segs = size / PAGE_SIZE; > > diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c > index 5fa78e6cff9a..ab17520c2d56 100644 > --- a/drivers/md/dm-ploop-cmd.c > +++ b/drivers/md/dm-ploop-cmd.c > @@ -386,7 +386,7 @@ ALLOW_ERROR_INJECTION(ploop_grow_relocate_cluster, ERRNO); > static int ploop_grow_update_header(struct ploop *ploop, > struct ploop_cmd *cmd) > { > - unsigned int size, first_block_off; > + unsigned int first_block_off; > struct ploop_pvd_header *hdr; > struct ploop_index_wb *piwb; > u32 nr_be, offset, clus; > @@ -413,9 +413,7 @@ static int ploop_grow_update_header(struct ploop *ploop, > } > piwb = md->piwb; > > - size = (PLOOP_MAP_OFFSET + cmd->resize.nr_bat_entries); > - size *= sizeof(map_index_t); > - clus = DIV_ROUND_UP(size, CLU_SIZE(ploop)); > + clus = ploop_nr_bat_clusters(ploop, cmd->resize.nr_bat_entries); > first_block_off = CLU_TO_SEC(ploop, clus); > > hdr = kmap_local_page(piwb->bat_page); > @@ -597,6 +595,11 @@ static int ploop_resize(struct ploop *ploop, sector_t new_sectors) > } > > nr_bat_entries = SEC_TO_CLU(ploop, new_sectors); > + nr_bat_clusters = ploop_nr_bat_clusters(ploop, nr_bat_entries); > + if ((u64)nr_bat_clusters + nr_bat_entries > PLOOP_MAX_HB_NR) { > + DMWARN("resize: too large size is requested"); > + return -EINVAL; > + } > > /* Memory for new md pages */ > ret = ploop_prealloc_md_pages(&cmd.resize.md_pages_root, > @@ -604,8 +607,6 @@ static int ploop_resize(struct ploop *ploop, sector_t new_sectors) > if (ret) > return ret; > > - size = (PLOOP_MAP_OFFSET + nr_bat_entries) * sizeof(map_index_t); > - nr_bat_clusters = DIV_ROUND_UP(size, CLU_SIZE(ploop)); > hb_nr = nr_bat_clusters + nr_bat_entries; > size = round_up(DIV_ROUND_UP(hb_nr, 8), sizeof(unsigned long)); > > @@ -1010,11 +1011,9 @@ static int process_flip_upper_deltas(struct ploop *ploop) > u8 level = ploop_top_level(ploop) - 1; > struct rb_node *node; > struct md_page *md; > - u64 size; > > - size = (PLOOP_MAP_OFFSET + READ_ONCE(ploop->nr_bat_entries)) > - * sizeof(map_index_t); > - bat_clusters = DIV_ROUND_UP(size, CLU_SIZE(ploop)); > + bat_clusters = ploop_nr_bat_clusters(ploop, > + READ_ONCE(ploop->nr_bat_entries)); > hb_nr = ploop->hb_nr; > > /* > diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h > index 23662943d56a..5041fc8f1e13 100644 > --- a/drivers/md/dm-ploop.h > +++ b/drivers/md/dm-ploop.h > @@ -12,6 +12,8 @@ > #include > > #define PLOOP_MAP_OFFSET 16 > +/* Keeps DIV_ROUND_UP(hb_nr, 8) and clu + PLOOP_MAP_OFFSET within u32 */ > +#define PLOOP_MAX_HB_NR round_down(U32_MAX - PLOOP_MAP_OFFSET, 8) > typedef u32 map_index_t; > #define BAT_ENTRIES_PER_PAGE (PAGE_SIZE / sizeof(map_index_t)) > > @@ -410,9 +412,9 @@ static inline unsigned int ploop_nr_pages_in_cluster(struct ploop *ploop) > static inline unsigned int ploop_nr_bat_clusters(struct ploop *ploop, > u32 nr_bat_entries) > { > - unsigned long size, bat_clusters; > + u64 size, bat_clusters; > > - size = (PLOOP_MAP_OFFSET + nr_bat_entries) * sizeof(map_index_t); > + size = ((u64)nr_bat_entries + PLOOP_MAP_OFFSET) * sizeof(map_index_t); > bat_clusters = DIV_ROUND_UP(size, CLU_SIZE(ploop)); > > return bat_clusters; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel