From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011055.outbound.protection.outlook.com [52.101.65.55]) (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 009253D813C for ; Wed, 30 Sep 2026 09:49:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.55 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790761792; cv=fail; b=CBnxj2vx5G3CxAJXs8addgUNIh+PjxxdVFW3WajrCaBuTzEtn+eci5lfAEP3ouGrCKXjiUQeAIPMfG4Ohv6y9dhfHjypH2a4VnNSfwP5hxk9eSysi8cWgo17372b0ElNY2wp5b61V44HyQX0OukuW6OiziZ0cPKVwuICTC2hCf0= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790761792; c=relaxed/simple; bh=FpljNuSV3EK5zrrUQ9mUasISxwPgjrus+FfPxGxC/BU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=M1oHO8s9ZlHUYVd6jMNctwYkP6WV+sahPGo3iRgx/65PxVZjFta8Y3JpC59cJDLmiWSQK4ZHKLHFcujXE+IUEt3JympMJYfnFQiCeceZNuU8Lw/ZTydG70MUBjd0bsA+EQR9lV5feWd7cPojH6K1YEvvqB8Mh7UMkkhrI0ayAN4= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=sSUE6O5g; arc=fail smtp.client-ip=52.101.65.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="sSUE6O5g" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cFgyJVpw2wU1FXXgnUGeV1KoGT6QWHrlm16aw1qWNqT6gzTIY7JwBB7MPTs7lyqse8DhmsH0pf64MZMtqdThK3hsSmeoQhFKepmbiO6QHrWxXfJ4L64AV95PWPUnhl0PMl53dL1Jnlb1QRvac73znQ4jhgllFmTnzXYpRwJ6W4ouL9Su/c95yJfNh3LOLJ7r14nWg5K49tbMd0oLDQ9BFyLdbBahURhmXF53oeMZbv69Y5HGLWlB/AFDnRjwoY6lH1lBQAURETRG5UMvdIjuNC+iu9+/Y8AMGc8kajO7V8Y2fUAAnpMlpTMmxdswzjK4EaveqPQWjUUVMPsEDgvDHg== 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=qxh5wqwFWwF3YmiSl9V1CVzV7TXaBzK06xckYP+81+U=; b=cMFFUki9l3vRCQ5XEqVEKBN9oZFpnW0MVhi0AYGXp6LjIbDVIUv8sEB0HpReXi6GbnrkwVFUIwUktOOxqFsAn+GIG6Yr+Tw5+Zl81813SfyBlgPGnzB453/xmVhHiunZw7jhp/oZHeg7RQKrMUFi+kcfMMz+deag0kTAT9bNHpig1fKbyL3mDFZ+5mk0CxCx6K1bLAVlFMnne9UqXc1zJlORNh3w47zDZbhdOIDXe9EWrMySf6M9nYsBFEBPa6YVNnUu4DMPmc7nM5j7PhIiTCMweCLJ2fG+UNQSwcA7dd+M4Q7MjWiWjsIfzqKtl0O9VHwIORvEdBtgVN0f8dfWBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qxh5wqwFWwF3YmiSl9V1CVzV7TXaBzK06xckYP+81+U=; b=sSUE6O5glsGyaZ9WXWE3+cLkPTYXD0gxCyn1+G97SqofDQvz2tAS2xdKbbSwzgtN2/tRCB2j9H9VlY581YgnAY8x+2g9jIfTAtMRekRmW8262Y/yt9Z77jBPWtv2vR7FySvbwOd8CB1QCFPEpC/5h++csXhGlH1rjxKit76iZySD7UHudM8rVdGiYZLifRBpvN1X7eYoixHgQV5DrFyF/gt/58MhCyr35gAagwqlLAjByxYN6sLj1zeUm03xlZItnpT6om0SLL04LaINHhUitKyN3x1H7yTl1WeACibBbLLNGtUBgNW6LS+HJPEKbMTQC7+hwf3bRxyDcrmavBmaKQ== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AM8PR04MB7874.eurprd04.prod.outlook.com (2603:10a6:20b:24d::9) by GV1PR04MB9198.eurprd04.prod.outlook.com (2603:10a6:150:29::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.19; Wed, 30 Sep 2026 09:49:43 +0000 Received: from AM8PR04MB7874.eurprd04.prod.outlook.com ([fe80::ac38:1699:6f18:c5d9]) by AM8PR04MB7874.eurprd04.prod.outlook.com ([fe80::ac38:1699:6f18:c5d9%6]) with mapi id 15.21.0451.022; Wed, 30 Sep 2026 09:49:43 +0000 From: "Peng Fan (OSS)" Date: Wed, 30 Sep 2026 17:46:55 +0800 Subject: [PATCH 1/7] regcache: extract locked helpers to replace open-coded lock/unlock pairs Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260930-regmap-lock-2nd-v1-1-33a8a482f9ae@nxp.com> References: <20260930-regmap-lock-2nd-v1-0-33a8a482f9ae@nxp.com> In-Reply-To: <20260930-regmap-lock-2nd-v1-0-33a8a482f9ae@nxp.com> To: Mark Brown , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, driver-core@lists.linux.dev, Peng Fan X-Mailer: b4 0.15.2 X-ClientProxiedBy: SI2PR02CA0016.apcprd02.prod.outlook.com (2603:1096:4:194::9) To AM8PR04MB7874.eurprd04.prod.outlook.com (2603:10a6:20b:24d::9) 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: AM8PR04MB7874:EE_|GV1PR04MB9198:EE_ X-MS-Office365-Filtering-Correlation-Id: e3bd98d1-5c2c-4734-d071-08df1ed82782 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|376014|1800799024|19092799006|10067099003|6133799003|11063799006|5023799004|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: FLYmEOrPUAVIzH5oAziPRkkJJ/80ohBeqnIpDvWDXClTJR2kBpZBMZQpDQjsP/ewjbmXggSu4LEhYdvzg3PK6IUKKz6NsIYmKur+X99AIGFJ6KSNEme14dAmGcHxSeFlD9aAxS69fK320MeydEHTApV9tRjnuVFyOhhZBexErQrJ6QFYJ8fXTLEYCrfT/tEIYis+fNo8ggiaJ3y6/ecwCkVNnFYZ7JDsaVWV9X7QNwFXP/QB2qmoAzPnyGuJ+J+II6oWOWYQvEn8z/bTfdnujZouPok3lbHBGEgOpGYph6CGiXcunf0TSBeqzucJBjUwXSICVV15xzlBdzesw5ViUQC+DNEYXZ2zMrqP3y1J1JOU6zCT2HEPV5wnSjeKovQkMnyLU5GgQyFQzzx67MSX8mqg0wPOKAwPIWMdevA9S5S8tU+TH6tnntk9iqIvfLuIBLlKrqEMNBQKOLNyUa4YAc1+EDF3KbMQZNEh9CAKZbsZKXNOJx0mDr5EBOt/bnZ6wxf5dl1q5N8iNDrCJh5Rl6AEUOt5RF/lrJKp57IBZkdp3LIE7B0iypuoU304rKR/xQsU/UJDwxRztuiQC6R9e6Jiy9LvoNlFm0OjYqN+m9C84zOGulejlxNbV+gfORqgreoZSBd228lUOSM7NE6w9nIg6oMuM4/XtoBJ80T9NZY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7874.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(376014)(1800799024)(19092799006)(10067099003)(6133799003)(11063799006)(5023799004)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?V1haalIxVGh1WkwxTDhGY3ZpNzhDaWVEWG55SU5kcFdQeWhWQU4yc09vRU5C?= =?utf-8?B?OFJqcExodnJxemdmNEIxZ3ZGeTNiVFk0TG5vK1VNZDNpd2xzYzJVVS9UdE9j?= =?utf-8?B?TEdZdnAvSC9GazVHaHE5UUFXTzd5a09vZ1hadkpkNGZQTUhVSVpCZDUzNXly?= =?utf-8?B?OCt6TThpcTZrMnR1b2JpZk10MXpmRGh0UzZXQVcvL3hlRUJ3YjhVTVVLbzZS?= =?utf-8?B?QUJSRHRqNFpiUnpVSlozRytTY2ZiMnhXYXpWNXhmUmhHam5SQVJOaXN4eWVk?= =?utf-8?B?Uy93SE1YVForNE5Qa004Rm1IbkpJZEp4b2tPcmUxWUk2Um5NWTZTNnM1Q01K?= =?utf-8?B?YURncVF1RzdrY2NoeGNmL1o5Vzk0allxbTA5V1NJdUVCeEU5d00zYnNTU0hG?= =?utf-8?B?VVRFQU9OVkI5aTdLUjZNTzY4bXEzS2Qxb0VoYytmalVDTUxoN3k4V3VRQUc2?= =?utf-8?B?MHRlUUVEb0tmYTNYQVBLUHY3QUVrNE9hdC85aFFRU0Erdkp6QTRCTk5rSDUv?= =?utf-8?B?eWhDNFNMTWN6RzFyMmY1R1JNWStyTVd4QkN3TXAzdC9hTjh5THZZcDh1UnNI?= =?utf-8?B?RmlYdURTTmJrVTlXSXorODY2bWYwdlFGbEtnQ0hNNm9GRUVnRkhtM0hYcWxL?= =?utf-8?B?RHQxTWs5OFdnYURlSmNwLzNOc2M0YTJvbUZuejNmYW8rSGE3YjA3NkhQbi94?= =?utf-8?B?K0Z6WVBjbi9sQmJRNlppWUJkTlg4ektUWnQ5emRqSS8rNnJCeVE1cXR5VUp4?= =?utf-8?B?Z2FZSS9EY0dPanQxeUF3c3dmaGtId2FNZVRBQUx3a0xaYTFBMnkwNExXdTlt?= =?utf-8?B?RkhuWDFXK2g3azVJOE8vc3RHNE9uc05pTHRJQVRpblNqWE1PQVJaZXVGN3hB?= =?utf-8?B?V3Z6WXRZWVdGZFBWUDIxS21jVEFQR1F6N2hNZkt4VHR3bExjaXJFdWd3d1Ex?= =?utf-8?B?dUNRaEdDSGJsL3hRWm5tejFuMHhsZFRiSUlzZEl1alkyb1F1VTFvTHZxdVNr?= =?utf-8?B?Tm41aUxUaVh1a0VkK3diSFZaQUcxZXN0YW5hMlo1QnJ0N3h3NG5aL1FxVE1G?= =?utf-8?B?NVVsWHhkVkFOa3pNdytjelF4WTlxZ25CVXZKbWxVYTZxYkFoTGpGa2EzQ3Rw?= =?utf-8?B?YlV0ajY3eWYxQnp1YmRNWTIzYlNRcExhUVdpZ3h3SFVvMkFtbDhoOFdKaFJr?= =?utf-8?B?TTQ1VlAxc3FzK1E2dXYreGR5K2Q5ZEhpL1JUU2c1QmtTYVJzSlBqY0Y3enR1?= =?utf-8?B?eGtEeHFFL09YTzc0M2tmbTBoMmV5Nkk4M1lBa1N6d0EzQ21sbExDLy83SVVZ?= =?utf-8?B?dE11LzVKZGgwKzRNM2hTWlhTbHdDQXJOMlk2U2NxWkZmUitReU84MFJla1Nl?= =?utf-8?B?UTBXUFJpVExCY2VOQ3FHWWtrOXVpTmNpZUY4eFlBelNwTk9hYnRJYWd5SXFx?= =?utf-8?B?TTFwTmdTZEo4K1p0RTRkUWhpV2ZMOENMSklQSk91MmZFUGNZS2VpcDdEMWY0?= =?utf-8?B?WDlEdmdvWjZLSGk0cW5nQTcrME1zMlBJVGN5YWE2bnRFU01mSkd1dWZyL2lO?= =?utf-8?B?c1JWTnpQQzIrS1BPa3VSS2FWSmt4VTR3TkpCYlo5OEVibURIQ3BMNVpxeUJ4?= =?utf-8?B?ZE0wMzJhN01QbWxXVVpVTnM5Q0dGTHd5R1ZzVDlUYXJkOEhnenVYek9CN3JS?= =?utf-8?B?MWtRa005RmFib3RCc2o4RytTV25wK3llRVh1UE5EUmdubzFNMXJYYy9tVDY5?= =?utf-8?B?Mnh3UnRFZnVvWHZXbHhzaU9SVVViZGFjeThPdFdFUDZkbUl1OHhBcDVEbW1r?= =?utf-8?B?alJjN1dsUDdMbVlEYy9FVzhzZGw2WWFuTDZuTlNpTkZMdXptb2gzVXpYbWt5?= =?utf-8?B?TU1jYTUzZ05xMVpKZmYwcnJSUGl3eXp3RXJ2bDRmc2NFRXR2cHVPcW5Zb0ZT?= =?utf-8?B?bjk4NFFqbUhGZFlocGdrYmtRWWl3R0FxRXJNdENTdWQyR281Nys4ZmRzajZw?= =?utf-8?B?NW04a2xUR0p6M2NMVlQ4Wng3c29JUXVtMmEzZUx0RzUxSFhicEw3OTltWXpy?= =?utf-8?B?ZW03c0g1anBnYm83NHlRdUVKQjVhNXNZK1psQmtoM0Y0T2dWcE9YSkMxcmJ4?= =?utf-8?B?UUY0K0VvMzJTM05xazZHUlJGYStnOTFJc2VtOXpYNXYyWmt0dHhkVVF3YXVm?= =?utf-8?B?TFFDZ0xYS2dRNlJqNFFjMEZmVlRZSDR1c1hHVENIbmhocmNDcDAvOGZRVkdo?= =?utf-8?B?anFTdW5XMUZkK0s5Y2N1aE5JWHYrcHp5Z29mcEZaNytKMGVKYWJBLzhZWXQx?= =?utf-8?B?NXYyZFoxMXdlbVJMREV3bXFPbHRGeEtsODNyWnVOb0ZxMnZBeVc0RU5kM3Jj?= =?utf-8?Q?jIgwijAW+ku7DLzQJoYUrnpVPnf8phkBPr5v+?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3bd98d1-5c2c-4734-d071-08df1ed82782 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2026 09:49:43.7403 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: y6Oe7JIiX6FavK3pgmVMBSzcBJVyj+6sbg6tOWQ03IEClhxcOiW43qOi3/J/i2QTtOSHBTwWkPK86zqmh3ZI11+9xW4mdDGLqFu2ASGgVOkPVAgylSFy4kEYSrSSEbvn X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9198 From: Peng Fan The previous patch ("regcache: use the regmap scoped lock guard") deliberately left regcache_init() with explicit map->lock()/unlock() calls because the function has a goto err_* cleanup ladder and mixing goto with cleanup helpers in the same function is discouraged by cleanup.h. Solve this by extracting two static helpers: regcache_locked_op() - acquires the regmap lock via guard(regmap), invokes an int-returning cache_ops callback (init, populate), and returns its result. Returns 0 when the callback is NULL. regcache_locked_exit() - acquires the regmap lock via guard(regmap) and invokes the void-returning exit callback. Returns immediately when the callback is NULL. Because the lock scope is now entirely inside the helper functions, it never crosses a goto target in the caller, so the cleanup.h concern does not apply. Convert all four remaining open-coded lock/unlock sites in regcache_init() (init, populate, error-path exit) and the scoped_guard in regcache_exit() to use these helpers. No functional change. Assisted-by: LLM Signed-off-by: Peng Fan --- drivers/base/regmap/regcache.c | 57 +++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index 4c80db5d6f6f..ebfa27bb6f54 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c @@ -121,6 +121,28 @@ static void regcache_hw_exit(struct regmap *map) kfree(map->reg_defaults_raw); } +static int regcache_locked_op(struct regmap *map, + int (*op)(struct regmap *map), + const char *action) +{ + if (!op) + return 0; + + dev_dbg(map->dev, "%s %s cache\n", action, map->cache_ops->name); + guard(regmap)(map); + return op(map); +} + +static void regcache_locked_exit(struct regmap *map) +{ + if (!map->cache_ops->exit) + return; + + dev_dbg(map->dev, "Destroying %s cache\n", map->cache_ops->name); + guard(regmap)(map); + map->cache_ops->exit(map); +} + int regcache_init(struct regmap *map, const struct regmap_config *config) { bool sort_defaults = false; @@ -222,15 +244,9 @@ int regcache_init(struct regmap *map, const struct regmap_config *config) map->max_register_is_set = true; } - if (map->cache_ops->init) { - dev_dbg(map->dev, "Initializing %s cache\n", - map->cache_ops->name); - map->lock(map->lock_arg); - ret = map->cache_ops->init(map); - map->unlock(map->lock_arg); - if (ret) - goto err_free_reg_defaults; - } + ret = regcache_locked_op(map, map->cache_ops->init, "Initializing"); + if (ret) + goto err_free_reg_defaults; /* * Some devices such as PMICs don't have cache defaults, @@ -243,12 +259,8 @@ int regcache_init(struct regmap *map, const struct regmap_config *config) goto err_exit; } - if (map->cache_ops->populate && - (map->num_reg_defaults || map->reg_default_cb)) { - dev_dbg(map->dev, "Populating %s cache\n", map->cache_ops->name); - map->lock(map->lock_arg); - ret = map->cache_ops->populate(map); - map->unlock(map->lock_arg); + if (map->num_reg_defaults || map->reg_default_cb) { + ret = regcache_locked_op(map, map->cache_ops->populate, "Populating"); if (ret) goto err_free; } @@ -257,12 +269,7 @@ int regcache_init(struct regmap *map, const struct regmap_config *config) err_free: regcache_hw_exit(map); err_exit: - if (map->cache_ops->exit) { - dev_dbg(map->dev, "Destroying %s cache\n", map->cache_ops->name); - map->lock(map->lock_arg); - map->cache_ops->exit(map); - map->unlock(map->lock_arg); - } + regcache_locked_exit(map); err_free_reg_defaults: kfree(map->reg_defaults); @@ -277,13 +284,7 @@ void regcache_exit(struct regmap *map) BUG_ON(!map->cache_ops); regcache_hw_exit(map); - - if (map->cache_ops->exit) { - dev_dbg(map->dev, "Destroying %s cache\n", - map->cache_ops->name); - scoped_guard(regmap, map) - map->cache_ops->exit(map); - } + regcache_locked_exit(map); kfree(map->reg_defaults); } -- 2.51.0