From nobody Mon Apr 6 17:32:24 2026 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010007.outbound.protection.outlook.com [52.101.193.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 141702356D9 for ; Thu, 19 Mar 2026 00:44:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773881046; cv=fail; b=mcgWCUhoiOA7+cDr6by6gjevXcxum5R0Adjx8KImVU4MNAdJUTmG/2eXVMFKpqWlFj/gos7YNWS1Oda/pkz9V78+09YOXDuh0dWkQJYnm+2g+v53vxZa2OUK5z4YmzfBcGBixNIG083ZfForn6UB3Q6gzcLg8m9bjvHkQ/biZAQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773881046; c=relaxed/simple; bh=EZSghXa9UFdRA0fu3gL//PXuMGWCj5OlozBaUgub+Pc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HcDrE1mu47q/0+tH3Bb8d4LpwH9+LMPq72jW6yNBPTfdoFjv/XsAqVctkd/YIa/u1yHsiByqtEUJZGkeUlQw63j2zVMBNN8twOc/ZocqWNp1ildvRIVQDF+oIimseyTqawG/AEctPEKTOGJf9TwLqZdrkY5Dk8xl0Ujkxj42mhk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=YZu+fEdP; arc=fail smtp.client-ip=52.101.193.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="YZu+fEdP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ERVOYX2uQYMwHrZ7nfSr8OveY0gmE7a5L7M1w7tvPdKfFlBDBkMnEfYXV2YjEwx6jpAxNB18X9FHDTSDZgoxVVBNJ7UXDbWefvxYyc7lC8qRLAqrS8LNzNMVVPQfUvGuXWD4ng+WIlJZha5hGI+UZ60Ybm5jXQPRfsabJinTn+Ac944cvigdgfxcP6/iqVUaagAKYnogHJU7a4+MulVwmcVmI4iTYHGJAbvIXG9JmNbme7z4ibUVINBgNYqk6aIDCJWNa3HXTUbhlbPYgET0Pm5eOyfIkESImK7r+HI3vv5NZhmDcXt1h9lqPBWJK2Ad5aLohvukNe/gUTzny5X66Q== 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=lLH/8vspey/1MsXScMxZTMxbb7ixDAgPZB7E7ldLBkI=; b=Lex/U5yeAO8ljfBb7+ul5wo5HYUw4hS6XZ+SV2ROf9aV2iaWqi+mxQ0ihgV4mSohmlnLTxiKIi7We5dL1FT8plBeDqQ7JVHXvlwuiQul1lys6x++qjnp6kFkIKQv9kyx/MSxHL2ECC6A9N9CCiX5IAdKjc8UnP9icmMnrzci9bfx6g9TPpqBYv8JnqoJdrWtV0/8ZqP+1s90wuFq4d+fI/GI2J32Qn3T0UDCjmwB4V8AfF9h4wyC/7jhnX22Vuukg08ckvG0QT8lpdcbLmkr2NBgluT6gF9Wf5qwKmGXs9toiDPmPiDs/ve2X5uTEPLgUYpZMtCy3cXuQKaYQ/rsLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lLH/8vspey/1MsXScMxZTMxbb7ixDAgPZB7E7ldLBkI=; b=YZu+fEdPOyKpeSURlDWJ/p4pdVvQZyaAqtLyDVMYASKEftfrqCuDyFmFdpXt6NrkqOU4AeEktLN1cwge2L9lA2R1bmZar93Fu6hHeVv4BU5Sox3vNl3hYGTBP5xPwBkSVUf2Yta1k73c5y2v9VTUCPZxHjow+j3cntq4ctGD5ePYos/yrmclOPgoL1uovoTbVWyCfC/EQP/nym1aX6sEGsxTKhoVFJFFy1LVS3suCC4Pee8yIjnfCoMenwxBDa5A9NqqlelUg7fm6yBWKEkopfiKqb9/qBUijK/ZS1UM5FeaVFynLCN42gT9S92hGDJzgMaPqyfruTnlsK9ywbv4mA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from PH0PR12MB8800.namprd12.prod.outlook.com (2603:10b6:510:26f::12) by DS5PPFEC0C6BDA1.namprd12.prod.outlook.com (2603:10b6:f:fc00::668) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.16; Thu, 19 Mar 2026 00:44:00 +0000 Received: from PH0PR12MB8800.namprd12.prod.outlook.com ([fe80::f79d:ddc5:2ad7:762d]) by PH0PR12MB8800.namprd12.prod.outlook.com ([fe80::f79d:ddc5:2ad7:762d%4]) with mapi id 15.20.9745.007; Thu, 19 Mar 2026 00:44:00 +0000 From: Yury Norov To: linux-kernel@vger.kernel.org Cc: Yury Norov , Yury Norov , Rasmus Villemoes , Andrew Morton Subject: [PATCH 3/3] bitmap: add test_zero_nbits() Date: Wed, 18 Mar 2026 20:43:48 -0400 Message-ID: <20260319004349.849281-4-ynorov@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260319004349.849281-1-ynorov@nvidia.com> References: <20260319004349.849281-1-ynorov@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR04CA0188.namprd04.prod.outlook.com (2603:10b6:408:e9::13) To PH0PR12MB8800.namprd12.prod.outlook.com (2603:10b6:510:26f::12) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR12MB8800:EE_|DS5PPFEC0C6BDA1:EE_ X-MS-Office365-Filtering-Correlation-Id: a38982c7-a009-49bd-4766-08de85509c98 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|376014|366016|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 6QOAyUiEKfaopnjnon8m64gNc7H4xWh6bqOlc5186DF3ohv/dHyYo5e1h+kIxFz03h9fcakjPCsE/3wZQmoGF5/7ifJWlgl16SO8gSLHgy8+vH34WyZxGicwURQk0/yiuT39p5/6DraK55D32d6c2OZoP3ZtXHNVwcqT1sPCah68iWCjFzI9UekvamPiRIZYTdDiYkzIbwbPifOJxUMlOuDIboy+rKk4dvZcsjiIxfz1t7difAj3Pa5QhqQyDgZLsBaBBQvKwSnEryBU2L9YeA/OpRIZCH61OuH9wkljEt7koSCfN7slMDFKDzwmpWVTY97RJIw9zD6abbKpG+0/lqrU/cv43bmRM+8aAX3IzIWhf7Q/Qoeh2fezWNibDu13eEuEqgDacwm+kvnoYWF7CjQglHM5r0lIvY10eopFhok8ud/81NQyFgnrSeHX71h294KLIoNKqkjKmql7pKkezk7AUs/LwcZ2PbeG9IzLPh/qFg4q+V9ezrNfuTBdamoQ7+Z7sJIzLxjunmWPyA+ppG6AKH0J5SvlCe8abrvRAK2hebWPWw2YO863Dt32WC5mgIJhtOatcId/ZMpjvj7jT0GmPYUEjb3KYAGHPrerqsRFuBBjnx2KDfX/AtN7mniqHLRsRMDALxnUl54HTSWPI7WfOYghEaBu6h71MniQL0NIx6R2Enb5V3Z1YNTbzV4egUTeCsZMq5KBjPgwQFihXxywJQUF+x0HlQrnZjoWdIE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR12MB8800.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(366016)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hm9Tv8T6iItScyASmYiIwVD629AipwZdICap0CHMi7pa2+wUy1pDVRXgLhbn?= =?us-ascii?Q?XeBIQMIpmGUF7qO5SAdRFMIALFw3pFDYUhoAaV3rEy5/3KA/xkVNuoJGrUh5?= =?us-ascii?Q?E1OM6+ZRZgJWog6Z21Q/ZxzrOxuo1rDL0z7ikUxOqEGK0MEApBV1iKWCmyzM?= =?us-ascii?Q?SF0WnYnzPaDuCil0kB6KrxOxqPg/bLiqzkcP1KjnZViauTdX3+knvbEYhT+M?= =?us-ascii?Q?SVnh3HsGa+xgBaFbF97m3ijkGmVV1gjj/0qkXw1ABsgznpn7gO50lH4K+LMj?= =?us-ascii?Q?TdnfiEfxRTLhZKc038aW6pkyi2kC1V2zJDAbJHRZikdUADzgkaxeRkDZloBC?= =?us-ascii?Q?YpGHCIEqBbvcDo062gtSljKdLV+nGYsJYRWWB2qpOrgduFRjyfTtKz2+rKmP?= =?us-ascii?Q?lJ5UaA/pLGuPgeNmTqPBY1f78izofhkjD+CCoI/iZxKmHgNzVlUN5oDdKPir?= =?us-ascii?Q?k18FGzPEChzs7lPxcPoa9StNz9I3JGyOyfs8d+C2JQ7rDlAfzgLGHNt+DiY6?= =?us-ascii?Q?TuYvfO5Tpla54wdT9+xj8ulrFkrBXnP6G250oI3AKCEE5iQ0UqKDqQfziGYu?= =?us-ascii?Q?ToDdFkPZqZJf3GTvBEggyi9j6R/tI4O0JnN+CJwGzIuFgrxdE5gjOHpjJkz+?= =?us-ascii?Q?+Hh7rUF3wvzLPDKN1oP9BYuzZ0dnvfJzKDZpYVQXN1z17EK9jR3YvU1bbQu6?= =?us-ascii?Q?+MRYliI+2UWxp22ENMhODoJMuIfUA5FFqwVgAVHurP7K/c2TwjxtDg2CDz/6?= =?us-ascii?Q?eBt7bw0VCq0aO1yRUmFL07nW0NTQrznM5AC521a0OOLUiOvjReZp8ZzSypko?= =?us-ascii?Q?DCrlNst0vUirMBssszut47Zx8QeWo6GNfr2hFsvAd/gC+yG/59GBYeD9soSm?= =?us-ascii?Q?rFoJ0aNlV//99DlzQLnxli1Il5EIwF7AQFnos8jV1oPP1MUjYin7AiBuMxFC?= =?us-ascii?Q?IX58SCD7byGQhSIsD563surcvlqfsSdAOOVeauxPflCgyaxH1eoRx6gDr4zI?= =?us-ascii?Q?Of3uvIUuJP+4Y4FdvZlOAVJNkEVjWHgEWp/RGEGbslstQaoYA4YfU0KBcC1p?= =?us-ascii?Q?D67IcV5nubI96AQtsjEBaLmCwDf8cc4oUJ7cmQw9xF9lSMX3f+fXZ1QEoPxQ?= =?us-ascii?Q?AYGE6uFSh9OadtHheSjqEAsOCfVSvHsNoTNBQnnCJP1tmtwLehOVuHe11ysq?= =?us-ascii?Q?p5I7WgyYo2UnuHYyGBTGxFtUDm2ezi8kdqcyVZqtHL6DT4PCvQmwt5eGYQ1j?= =?us-ascii?Q?ggBqveGBTS7QrbJe8Zyz/oEaDzXYp585vZ6XspsU4ITjRu6DRaK4DPr8g18Z?= =?us-ascii?Q?BvRwjysWp7U/3jTx+s07x8z850g6RVDFphMBGT5nnQKqUmquQ76UaK6MO3lO?= =?us-ascii?Q?EBd198iUVraEyX0MZJ/uvz1BPwHnFSjtrA/L8G/KnNq97W92IfGRQasWGfMx?= =?us-ascii?Q?6Hshgm1Ta3mSNjdvw1ru6lt0+YvnUuGjodumKNlTR1u1RqRR44XVNZFV/mTT?= =?us-ascii?Q?xrg/VvxXA1U5wRp5nNR6QaT07Nz29Yv9asS5o3GAD6o0QrogjgeKB0QrQoK0?= =?us-ascii?Q?5bUirEzwk+Sx9Oi/me8O+GI2ocrhDV32Iaf3ebOhxub/Gz5dKXjZgfJ6Sq4d?= =?us-ascii?Q?he17UV2UQdSIjcG2JJCkjN1zbJgXNQmGTKAcZ2qF3RNa0O/Tcf8w9h8UTXri?= =?us-ascii?Q?PSGchUFJ9f1n1YlwHdC12UQN3MdDFuTWsEbP3cmbWt02nkErtyteFi8Ic1LX?= =?us-ascii?Q?NeY+0QhmHediPw1SdAIsNKlYx/RZOsvUZvkO2nV+A3hnJJavKOtY?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: a38982c7-a009-49bd-4766-08de85509c98 X-MS-Exchange-CrossTenant-AuthSource: PH0PR12MB8800.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Mar 2026 00:44:00.5339 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GWXFJ6XuaGl97+C1HBfDzHWoxMZBhjYLVK/4Dpjgc9EBdOWrmWd+guSRoenfQe7jjNrgJYVqbccB7Jm93Uwpeg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS5PPFEC0C6BDA1 Content-Type: text/plain; charset="utf-8" In most real-life cases, 0-length bitmap provided by user is a sign of an error. The API doesn't provide any guarantees on returned value, and the bitmap pointers are not dereferenced. Signed-off-by: Yury Norov --- lib/test_bitmap.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c index b6f27c632c75..7a61ea858837 100644 --- a/lib/test_bitmap.c +++ b/lib/test_bitmap.c @@ -1467,6 +1467,62 @@ static void __init test_bitmap_write_perf(void) pr_info("%s:\t\t%llu\n", __func__, time); } =20 +/* + * nbits =3D=3D 0 is most commonly not a valid case. Bitmap users should r= evisit + * the caller logic. Bitmap API doesn't provide any guarantees on returned + * value. The pointers are not dereferenced. The return value is intention= ally + * ignored. + */ +static void __init test_zero_nbits(void) +{ + static volatile __always_used unsigned long ret __initdata; + + bitmap_clear(NULL, 0, 0); + bitmap_complement(NULL, NULL, 0); + bitmap_copy(NULL, NULL, 0); + bitmap_copy_clear_tail(NULL, NULL, 0); + bitmap_fill(NULL, 0); + bitmap_from_arr32(NULL, NULL, 0); + bitmap_from_arr64(NULL, NULL, 0); + bitmap_or(NULL, NULL, NULL, 0); + bitmap_set(NULL, 0, 0); + bitmap_shift_left(NULL, NULL, 0, 0); + bitmap_shift_right(NULL, NULL, 0, 0); + bitmap_to_arr32(NULL, NULL, 0); + bitmap_to_arr64(NULL, NULL, 0); + bitmap_write(NULL, 0, 0, 0); + bitmap_xor(NULL, NULL, NULL, 0); + bitmap_zero(NULL, 0); + + ret =3D bitmap_and(NULL, NULL, NULL, 0); + ret =3D bitmap_empty(NULL, 0); + ret =3D bitmap_equal(NULL, NULL, 0); + ret =3D bitmap_full(NULL, 0); + ret =3D bitmap_or_equal(NULL, NULL, NULL, 0); + ret =3D bitmap_read(NULL, 0, 0); + ret =3D bitmap_subset(NULL, NULL, 0); + ret =3D bitmap_weight(NULL, 0); + ret =3D bitmap_weight_and(NULL, NULL, 0); + ret =3D bitmap_weight_andnot(NULL, NULL, 0); + ret =3D bitmap_weight_from(NULL, 0, 0); + ret =3D bitmap_weighted_or(NULL, NULL, NULL, 0); + + ret =3D find_first_and_and_bit(NULL, NULL, NULL, 0); + ret =3D find_first_and_bit(NULL, NULL, 0); + ret =3D find_first_andnot_bit(NULL, NULL, 0); + ret =3D find_first_bit(NULL, 0); + ret =3D find_first_zero_bit(NULL, 0); + ret =3D find_last_bit(NULL, 0); + ret =3D find_next_and_bit(NULL, NULL, 0, 0); + ret =3D find_next_andnot_bit(NULL, NULL, 0, 0); + ret =3D find_next_bit(NULL, 0, 0); + ret =3D find_next_clump8(NULL, NULL, 0, 0); + ret =3D find_next_zero_bit(NULL, 0, 0); + ret =3D find_nth_and_bit(NULL, NULL, 0, 0); + ret =3D find_nth_bit(NULL, 0, 0); + ret =3D find_random_bit(NULL, 0); +} + #undef TEST_BIT_LEN =20 static void __init selftest(void) @@ -1490,6 +1546,7 @@ static void __init selftest(void) test_bitmap_read_perf(); test_bitmap_weight(); test_bitmap_write_perf(); + test_zero_nbits(); =20 test_find_nth_bit(); test_for_each_set_bit(); --=20 2.43.0