From nobody Thu Sep 24 16:07:45 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013004.outbound.protection.outlook.com [52.101.83.4]) (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 9E67E53A3A3 for ; Tue, 22 Sep 2026 11:13:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075617; cv=fail; b=il4cHu42uzIeCZ9IYWiS4+obm5Et1EOtxedgA7hHuSpVgWmYzsmiJAuVNxkP5SjrttJmhPU7a2kfRK9SZxV4OxJP3MFgU9nE1xQB8TNlMhILQZUwM9a6WLHExnaBMFswGrR4454czTljfDXgD6pnDo1rJ2tAQN/z06XKJmvGDgw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075617; c=relaxed/simple; bh=CdIeNDPEXLSBvz+pU+72+hSlHgb2rQCvlgbq8mxx5X8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=rAPsUjeL+SU4hWBMuZH+7D25+9RrQBi/6GSBS02Nd1zG1vxIo6zFRFgeGttMkUV9/Krw1wNe7wdRfx5AL+33FLZ1N6EpxS9S6dnufgW/YZb6ofqVHNcA17rSxXCLs1+N9jr98KQWXyk9vAxVP4sjazt6L/cEXI2dq9X7x4EK1l0= 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=ZhjPY9Fl; arc=fail smtp.client-ip=52.101.83.4 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="ZhjPY9Fl" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tYh4oNzzQZGHKsOC07i3Pb+3ElFZHueGyUo3tnfSosyCPiFx6GjdClktISpJ+DdrE6deChHBPQkFGSXW2EejI3RXPPWJRAp1ndNZfyx8e4l0atTlCRHOOqeiLsGA6sSSYOQi06IqjEV+ENQiyLMxhYXd8PZ6zqy5xK5n5vkgjTDOVL3KksgE3YwMs20jCQDDWo8Aks5c57l5GWnKekcrWrlT+UNSQz4s8/GlnNCeNXg6eMhz+qXJRmTInK2vAuLbK05xbV4gKy44TWVc+rF+mdP6GyQkL4RtGyDh/CTRGv25a/c6bw+q8yInVAlTbJvHeyqO08rIUFXTcZOB7Um03w== 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=af0wBRm/nK9bxqnS2sNyNYOeuy8hrr82YRXNkSpc3P0=; b=l27axVypll+/ECG8O+/zAOagknE2mLSdJ1uQwOvt/4Z0bqz5YeX7cmZdn7I4qBEz78uQoHJKpCCMDJY7XActC8Bg6iTV0MQTK30FuGhm3Jrr0E+R6Rv4HjaWvleRR81setS82/BFoYDdKqHWjRN3FJsMjnm6SlrCXVcsdXMJIPeA5ZUt58vkivwySUAUxqscjizVx8yynD4rYueIR4p0lSXT3QZt9j5zbVRAVJf1VtP716NFl3Ez1udOiTkGgzlvH22NGETEXL7lxGNCc9/dpl+20GD+yct6ozCWEl8SYPiomOMlLttMjDpEOWNdlXSwOK2+s1L/t6gN6NJYF5R3uA== 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=af0wBRm/nK9bxqnS2sNyNYOeuy8hrr82YRXNkSpc3P0=; b=ZhjPY9FlEWdxAs2Sai6hyPY8hhooIw8Z3uexF45KriU2hVRwO47rzBy/dU1eKf/vmqVwpDX/iY85pkORVpAqp/AwVi1ol+3+htl6XuR+xZrRxyIC4fAuItlJLdevd90QF9EpnvgHcCxobA3iA841qwqtRg3HpojrK+8/9rKLbmNRAc9MP4SHIecbopiy0yE/JilpeTmHWFJt9KJwEE24UAsdqZ81L/ey3HDWBkQPmHDV1dTQEWZEOedKbuNiRx0DcImrZQzqJMOFGmDj0icnWpUkXYvl6KbR4Ty8PYYhuK528nddPSD0Ulq3yr2YFv4FaWdr9w8q4ausqkAQ1cnD5A== Authentication-Results: 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 GV2PR04MB11191.eurprd04.prod.outlook.com (2603:10a6:150:27b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.16; Tue, 22 Sep 2026 11:13:30 +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.0428.015; Tue, 22 Sep 2026 11:13:29 +0000 From: "Peng Fan (OSS)" Date: Tue, 22 Sep 2026 19:10:55 +0800 Subject: [PATCH RFC v2 1/4] regmap: convert lock/unlock to a scoped guard Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-regmap-lock-guard-v2-1-0c9d426427bd@nxp.com> References: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@nxp.com> In-Reply-To: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@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: SI2P153CA0029.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::16) 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_|GV2PR04MB11191:EE_ X-MS-Office365-Filtering-Correlation-Id: beb27282-d699-4f8c-e830-08df189a87c3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|1800799024|23010399003|10067099003|56012099006|6133799003|5023799004|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: 3+Z9scOr6pT4tXsa/9Rcu/R7zRUL0oLwA18ywuYPlP6dMNO4sKa5ZqS/EIrX5bSXp5k0bGyyScO7egBHeKu1BJxZWGXciVqfyMA8IL5naENK5gl9gbmyzn9LJfUdVj0JvDi8lioYSktUk3hW9KSFhq/nKSTjyuakIfuurPZpq5q/74M+ZmjmEUtddrMENMsfQcg2Jv2EQJ5Kx0uG83/7DcVuMjLzu3AP7pYBzOsQ87W4AoWfTw2ncKCT2az8ZjsIXDawHT3CPv+W6Nr2op1rMk1MdXe7eOpD5KQ1GZkL2kGXf9975QBjwsBP5noZT2ZKOT/ViaYiA9o9Xwu7XIrUJ6ZUCuJnvWSA6bqT4QLzZd96UiXMOyS1Xw6y9mgfqA5dKfCIeIIuWG2SWf94XXFmHkot/l2UkpZ/Xtrj3KsGCUjbIEu26RXDpeHOwUPTWKiHX69lLm9iJZApAEZ6rB78uAbOAZ+JmY++ajRUiPv4mXZfjpPHzJEZJPFJSqrH9FxMPtqXp/pG87g7ff91+5SbzOtKsmUe1182R4KYIA8STMH0fNNFYeecifM2gYKs9Ujk1JnZamABmTfDroZuuME6KPjfWbqrSw004GSDONMXoLS3F6zUHrIB01/vBKdfyw/eva58FeBt72k9KjizGFujCsX3l1KpV2wCw9D2V0j1Xaw= 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)(366016)(19092799006)(376014)(1800799024)(23010399003)(10067099003)(56012099006)(6133799003)(5023799004)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bFpFYkJYeWNjVUlGUVFzMmlYakpCcDhPVzNtTElGREFPU0pIck8zK2RVUENZ?= =?utf-8?B?NWt2ZnVOeS9BeWlZaTluZFpJU1ZNa0REeUl0UDVLT0JybW5SdUZQbFBlYVdp?= =?utf-8?B?bTRjNXNxbW9BdFNUa1d4YW1xTUpod0JqcXZhWjQvMERIdkorWHpZTy80RC9Y?= =?utf-8?B?M3hpQW5QWXBPcksxKy9EczNabkV0WXJTMCtsSWNDVU9adHd5VTk4cFExeWRj?= =?utf-8?B?SWRnL2pRSDF5MmZzZnBOMnYzUW1aOWhlYy9jRHFKTzEzOWFlSmYwOXJNY3FR?= =?utf-8?B?cENMRlRFZVRvdmhiTkVsaXVpWDhzdXJRenlnZjVScWZvZVlaUEp0MmdBL1Zh?= =?utf-8?B?TEFvdDNQUlEwamhNNFBoSWY5NmlhNTRBc2srYUdwWFFvYzhDL2YydXFOTUpN?= =?utf-8?B?V0pQTVZJZUFPRlIwUURPcU0vV1hWN091TjcrWEloeEZ1c0psbTBwUnVpWjR4?= =?utf-8?B?MVNlMlIycFhmZ0kvajBncjNtMHdHdE45aUZiNDdzWnlVbEdZalRob3VwcnUv?= =?utf-8?B?VWtFMnlEZ3grRU9OTGo2SXJQTlVzN25JSE9KRm1ZWkwvRG8vV1NuUVl3WlV0?= =?utf-8?B?dHBvK2I0UTVMK1EvNndSWjZVQ2ZxK2FJZlpqN3hHVUZYMUJVUlA1TnJFVnRK?= =?utf-8?B?dWtzbmVNWk9FOUVHM3V6SjExQTNRSlBJUmFwU2l1VkVya0dERy9QL2Yvaits?= =?utf-8?B?MmZnVFNqQVZ5d1Y0N1l2ZjRNaXc0MU95MHMvUSt3QUZCdlVrbjRROXBnRHNp?= =?utf-8?B?UkZ3R1MvUHBjQVNFeUZQSUtHSS8zbDRzOWlsSkdLS0FxeEFmSXhWKzVKS2ww?= =?utf-8?B?REtoOGRIaWk5MEJ0ZEVtanhvdzlmSyt3S1RWck9zZ3BQODR6ZlRERW91TXYr?= =?utf-8?B?MUdwTG9Mb3pwSEpUN1RSZWFmbkdCUUd1U1lCYWNFL3FpNUk1Q0M3NDFjNS91?= =?utf-8?B?Rm1vaVFvZ2gwMUpab3FiOTg4bXFUTUZ1UGNpL3pXekE5b2owMTBYMlFCUC9K?= =?utf-8?B?MVgwZ1RHT0E2aGkwdGZZUFJvYUtMRkd4WGM2QXVGbmVuSDh3V3pOTUI0VjZt?= =?utf-8?B?S05NSEtEN1ZSMlhVOWxmeHZmenFDNldzaGJTejBQR1o3bFNuK1J3ZnV2T3Ju?= =?utf-8?B?ZzFMc1VWbHV6blcxbEgvbDc2SXZGM1BPQ0I1TnVzVC9XeWQwNm9UWnJnOXJv?= =?utf-8?B?aXFUczltcGtkVUR4NEZlcWRVWGJsZXFyc3RsVm9zMERhdENLWkJYR3dPT01j?= =?utf-8?B?SWplMmhrTm9QaGt1M3ByRm05ZjZJYXZ4MytmeVdUUmdpUUViUU44SHl5b0w2?= =?utf-8?B?Y21CRDFiVE1Edm5PMXpMaDU1ck1sQ1BBK3VtYTFXUkZqSWJQZDVmem5XeWcx?= =?utf-8?B?OEw4cVV6TFVxeldYY3NqMXBxRFJNUWJRUk9DLzdNOUJUbmV4MVNOaEs3K1FQ?= =?utf-8?B?MDlhaFU3YTVTaXFDa0dEWmRUM3ZhbnFPdGtCN2RpU0p5M3BRVTFScU82TEhw?= =?utf-8?B?Q1hoWmhvL2Z3U0dOcTVZR21WeDRhcExCYjBEQmZ6OUw5a3dDT2JIQWhNSkJL?= =?utf-8?B?blhuRU9NaGR0ZERlcUg0a1l4ak1DSThFc0IxRVkwM2JNcTdHVFhDdnp3bHNU?= =?utf-8?B?bzZBZmE0ak5BUFZ1WFZ5VHBsTndEdGVOUmRUYjV0ODRmVmltVVZTUEJKUjZY?= =?utf-8?B?TW9DN1JuajJWQWJGNHhjWGV6TzhQb0ttTVl5bHUrS0ZyaWNHaE4xbnpRYndn?= =?utf-8?B?Wmp1N0hEejQ3YWY0WEdyNmxXMXd3elI0b3hyVzhQM0FQZ1NuZ3luajNkeHVt?= =?utf-8?B?cEYwN1FtMXZSZHFMdU9seWRKdWFMVDhHbmw1dkFZUHBNc2JCSjBiZG54QnRp?= =?utf-8?B?a0p1MzF5dHRFckpzbVJwdGVyK1JsM2pCeUVtVjFuQkJHN0hnQnZHMVBKMmJB?= =?utf-8?B?eGlqV2FpdUtIWGpWRGlGc1NCbGZaOUZIU1Yvb1RNbmxCd3lxSjBKQkhLOE9v?= =?utf-8?B?d2ZmVThQM2MxWG1RczdKcFhxN2tkN0FManVHU1ljNDZLSW1CMmtNeGF1c2hj?= =?utf-8?B?WS9nZkRyT0gvZnFEZWFmRUU2Tnh3dTI5UHExeFlYUHRkdVJPRldMRFphekFw?= =?utf-8?B?YjFsUzBiQ2JzUVJOOWlaQ3BXSndtVHdXb2VGOCtpVXc4TjB1d0tKU0t1WUZY?= =?utf-8?B?MitOMnRKWjUyeFFheEsrRkM0dG5QT21jek5WbnZ3R0ZSTDFBYVcrd2lXTUEy?= =?utf-8?B?UXRTcTNpOG1JN0JSQ0JDSitzOFFMUENMb2ZYUm42TitxQk4zMUF1S2lNTGJn?= =?utf-8?B?NVZNZHFqemw5MVdHRGRyK0ZuSzJmSmk1Q29CSEdSSVpqUTNvaU81TXF0cU9a?= =?utf-8?Q?OkG46IE30CcuSYpyk0oC66NdyugtV1FdfB7us?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: beb27282-d699-4f8c-e830-08df189a87c3 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 11:13:29.3482 (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: jk4U5HGzb4043ecnztk1/Q/QGdq56DroA+WJaOxAZpQPuk8AspPjNj1LS1TCgkxLAIg/JGWjVI8waHI6llNbIKv3rrdWM4RcIT8HkgSAsEpuQC1VdOXniypeDaq1rLB9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11191 From: Peng Fan The regmap lock and unlock callbacks are invoked directly as map->lock(map->lock_arg) / map->unlock(map->lock_arg) at every call site. This open-coded pattern requires manual unlocking on every return path, which spreads goto out_unlock chains and duplicated unlock statements throughout the code and is an easy place to leak the lock on an error path. Define a scoped guard for the regmap lock in internal.h. The lock and unlock callbacks are chosen at init time (mutex, spinlock, raw spinlock, hwspinlock or none) and return void, so an unconditional DEFINE_GUARD() is sufficient. Convert all lock/unlock users in regmap.c to guard(regmap)() for function-scope critical sections and scoped_guard(regmap, ...) where work must run outside the lock (e.g. regmap_register_patch() calling regmap_async_complete()). This drops every manual unlock and the associated goto out_unlock labels with no functional change. Assisted-by: Claude:claude-opus-4.8 Signed-off-by: Peng Fan --- drivers/base/regmap/internal.h | 11 +++ drivers/base/regmap/regmap.c | 182 +++++++++++++------------------------= ---- 2 files changed, 70 insertions(+), 123 deletions(-) diff --git a/drivers/base/regmap/internal.h b/drivers/base/regmap/internal.h index c73036744468..ea375cc8ae87 100644 --- a/drivers/base/regmap/internal.h +++ b/drivers/base/regmap/internal.h @@ -10,6 +10,7 @@ #ifndef _REGMAP_INTERNAL_H #define _REGMAP_INTERNAL_H =20 +#include #include #include #include @@ -185,6 +186,16 @@ struct regmap { struct hwspinlock *hwlock; }; =20 +/* + * Scoped guard for the regmap lock. The lock/unlock callbacks are selected + * at init time (mutex, spinlock, raw spinlock, hwspinlock or none) and ne= ver + * fail, so an unconditional guard is sufficient. Use with guard(regmap)(m= ap) + * or scoped_guard(regmap, map) { ... }. + */ +DEFINE_GUARD(regmap, struct regmap *, + _T->lock(_T->lock_arg), + _T->unlock(_T->lock_arg)) + struct regcache_ops { const char *name; enum regcache_type type; diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index 98184a00097a..0b40e1e7817c 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -115,9 +115,8 @@ bool regmap_cached(struct regmap *map, unsigned int reg) if (map->max_register_is_set && reg > map->max_register) return false; =20 - map->lock(map->lock_arg); - ret =3D regcache_read(map, reg, &val); - map->unlock(map->lock_arg); + scoped_guard(regmap, map) + ret =3D regcache_read(map, reg, &val); if (ret) return false; =20 @@ -1977,18 +1976,12 @@ int _regmap_write(struct regmap *map, unsigned int = reg, */ int regmap_write(struct regmap *map, unsigned int reg, unsigned int val) { - int ret; - if (!IS_ALIGNED(reg, map->reg_stride)) return -EINVAL; =20 - map->lock(map->lock_arg); - - ret =3D _regmap_write(map, reg, val); - - map->unlock(map->lock_arg); + guard(regmap)(map); =20 - return ret; + return _regmap_write(map, reg, val); } EXPORT_SYMBOL_GPL(regmap_write); =20 @@ -2009,7 +2002,7 @@ int regmap_write_async(struct regmap *map, unsigned i= nt reg, unsigned int val) if (!IS_ALIGNED(reg, map->reg_stride)) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 map->async =3D true; =20 @@ -2017,8 +2010,6 @@ int regmap_write_async(struct regmap *map, unsigned i= nt reg, unsigned int val) =20 map->async =3D false; =20 - map->unlock(map->lock_arg); - return ret; } EXPORT_SYMBOL_GPL(regmap_write_async); @@ -2080,20 +2071,14 @@ int _regmap_raw_write(struct regmap *map, unsigned = int reg, int regmap_raw_write(struct regmap *map, unsigned int reg, const void *val, size_t val_len) { - int ret; - if (!regmap_can_raw_write(map)) return -EINVAL; if (val_len % map->format.val_bytes) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 - ret =3D _regmap_raw_write(map, reg, val, val_len, false); - - map->unlock(map->lock_arg); - - return ret; + return _regmap_raw_write(map, reg, val, val_len, false); } EXPORT_SYMBOL_GPL(regmap_raw_write); =20 @@ -2211,21 +2196,17 @@ int regmap_noinc_write(struct regmap *map, unsigned= int reg, if (val_len =3D=3D 0) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 - if (!regmap_volatile(map, reg) || !regmap_writeable_noinc(map, reg)) { - ret =3D -EINVAL; - goto out_unlock; - } + if (!regmap_volatile(map, reg) || !regmap_writeable_noinc(map, reg)) + return -EINVAL; =20 /* * Use the accelerated operation if we can. The val drops the const * typing in order to facilitate code reuse in regmap_noinc_readwrite(). */ - if (map->bus->reg_noinc_write) { - ret =3D regmap_noinc_readwrite(map, reg, (void *)val, val_len, true); - goto out_unlock; - } + if (map->bus->reg_noinc_write) + return regmap_noinc_readwrite(map, reg, (void *)val, val_len, true); =20 while (val_len) { if (map->max_raw_write && map->max_raw_write < val_len) @@ -2234,14 +2215,12 @@ int regmap_noinc_write(struct regmap *map, unsigned= int reg, write_len =3D val_len; ret =3D _regmap_raw_write(map, reg, val, write_len, true); if (ret) - goto out_unlock; + return ret; val =3D ((u8 *)val) + write_len; val_len -=3D write_len; } =20 -out_unlock: - map->unlock(map->lock_arg); - return ret; + return 0; } EXPORT_SYMBOL_GPL(regmap_noinc_write); =20 @@ -2357,7 +2336,8 @@ int regmap_bulk_write(struct regmap *map, unsigned in= t reg, const void *val, * single write operations. */ if (!map->write || !map->format.parse_inplace) { - map->lock(map->lock_arg); + guard(regmap)(map); + for (i =3D 0; i < val_count; i++) { unsigned int ival; =20 @@ -2372,18 +2352,15 @@ int regmap_bulk_write(struct regmap *map, unsigned = int reg, const void *val, ival =3D *(u32 *)(val + (i * val_bytes)); break; default: - ret =3D -EINVAL; - goto out; + return -EINVAL; } =20 ret =3D _regmap_write(map, reg + regmap_get_offset(map, i), ival); if (ret !=3D 0) - goto out; + return ret; } -out: - map->unlock(map->lock_arg); } else { void *wval; =20 @@ -2653,15 +2630,9 @@ static int _regmap_multi_reg_write(struct regmap *ma= p, int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *= regs, int num_regs) { - int ret; - - map->lock(map->lock_arg); - - ret =3D _regmap_multi_reg_write(map, regs, num_regs); - - map->unlock(map->lock_arg); + guard(regmap)(map); =20 - return ret; + return _regmap_multi_reg_write(map, regs, num_regs); } EXPORT_SYMBOL_GPL(regmap_multi_reg_write); =20 @@ -2690,7 +2661,7 @@ int regmap_multi_reg_write_bypassed(struct regmap *ma= p, int ret; bool bypass; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 bypass =3D map->cache_bypass; map->cache_bypass =3D true; @@ -2699,8 +2670,6 @@ int regmap_multi_reg_write_bypassed(struct regmap *ma= p, =20 map->cache_bypass =3D bypass; =20 - map->unlock(map->lock_arg); - return ret; } EXPORT_SYMBOL_GPL(regmap_multi_reg_write_bypassed); @@ -2737,7 +2706,7 @@ int regmap_raw_write_async(struct regmap *map, unsign= ed int reg, if (!IS_ALIGNED(reg, map->reg_stride)) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 map->async =3D true; =20 @@ -2745,8 +2714,6 @@ int regmap_raw_write_async(struct regmap *map, unsign= ed int reg, =20 map->async =3D false; =20 - map->unlock(map->lock_arg); - return ret; } EXPORT_SYMBOL_GPL(regmap_raw_write_async); @@ -2863,18 +2830,12 @@ static int _regmap_read(struct regmap *map, unsigne= d int reg, */ int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val) { - int ret; - if (!IS_ALIGNED(reg, map->reg_stride)) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 - ret =3D _regmap_read(map, reg, val); - - map->unlock(map->lock_arg); - - return ret; + return _regmap_read(map, reg, val); } EXPORT_SYMBOL_GPL(regmap_read); =20 @@ -2897,7 +2858,7 @@ int regmap_read_bypassed(struct regmap *map, unsigned= int reg, unsigned int *val if (!IS_ALIGNED(reg, map->reg_stride)) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 bypass =3D map->cache_bypass; cache_only =3D map->cache_only; @@ -2909,8 +2870,6 @@ int regmap_read_bypassed(struct regmap *map, unsigned= int reg, unsigned int *val map->cache_bypass =3D bypass; map->cache_only =3D cache_only; =20 - map->unlock(map->lock_arg); - return ret; } EXPORT_SYMBOL_GPL(regmap_read_bypassed); @@ -2941,22 +2900,18 @@ int regmap_raw_read(struct regmap *map, unsigned in= t reg, void *val, if (val_count =3D=3D 0) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 if (regmap_volatile_range(map, reg, val_count) || map->cache_bypass || map->cache_type =3D=3D REGCACHE_NONE) { size_t chunk_count, chunk_bytes; size_t chunk_regs =3D val_count; =20 - if (!map->cache_bypass && map->cache_only) { - ret =3D -EBUSY; - goto out; - } + if (!map->cache_bypass && map->cache_only) + return -EBUSY; =20 - if (!map->read) { - ret =3D -ENOTSUPP; - goto out; - } + if (!map->read) + return -ENOTSUPP; =20 if (map->use_single_read) chunk_regs =3D 1; @@ -2970,7 +2925,7 @@ int regmap_raw_read(struct regmap *map, unsigned int = reg, void *val, for (i =3D 0; i < chunk_count; i++) { ret =3D _regmap_raw_read(map, reg, val, chunk_bytes, false); if (ret !=3D 0) - goto out; + return ret; =20 reg +=3D regmap_get_offset(map, chunk_regs); val +=3D chunk_bytes; @@ -2981,7 +2936,7 @@ int regmap_raw_read(struct regmap *map, unsigned int = reg, void *val, if (val_len) { ret =3D _regmap_raw_read(map, reg, val, val_len, false); if (ret !=3D 0) - goto out; + return ret; } } else { /* Otherwise go word by word for the cache; should be low @@ -2991,16 +2946,13 @@ int regmap_raw_read(struct regmap *map, unsigned in= t reg, void *val, ret =3D _regmap_read(map, reg + regmap_get_offset(map, i), &v); if (ret !=3D 0) - goto out; + return ret; =20 map->format.format_val(val + (i * val_bytes), v, 0); } } =20 - out: - map->unlock(map->lock_arg); - - return ret; + return 0; } EXPORT_SYMBOL_GPL(regmap_raw_read); =20 @@ -3041,12 +2993,10 @@ int regmap_noinc_read(struct regmap *map, unsigned = int reg, if (val_len =3D=3D 0) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 - if (!regmap_volatile(map, reg) || !regmap_readable_noinc(map, reg)) { - ret =3D -EINVAL; - goto out_unlock; - } + if (!regmap_volatile(map, reg) || !regmap_readable_noinc(map, reg)) + return -EINVAL; =20 /* * We have not defined the FIFO semantics for cache, as the @@ -3054,16 +3004,12 @@ int regmap_noinc_read(struct regmap *map, unsigned = int reg, * written value? Just avoid this by always reading the FIFO * even when using cache. Cache only will not work. */ - if (!map->cache_bypass && map->cache_only) { - ret =3D -EBUSY; - goto out_unlock; - } + if (!map->cache_bypass && map->cache_only) + return -EBUSY; =20 /* Use the accelerated operation if we can */ - if (map->bus->reg_noinc_read) { - ret =3D regmap_noinc_readwrite(map, reg, val, val_len, false); - goto out_unlock; - } + if (map->bus->reg_noinc_read) + return regmap_noinc_readwrite(map, reg, val, val_len, false); =20 while (val_len) { if (map->max_raw_read && map->max_raw_read < val_len) @@ -3072,14 +3018,12 @@ int regmap_noinc_read(struct regmap *map, unsigned = int reg, read_len =3D val_len; ret =3D _regmap_raw_read(map, reg, val, read_len, true); if (ret) - goto out_unlock; + return ret; val =3D ((u8 *)val) + read_len; val_len -=3D read_len; } =20 -out_unlock: - map->unlock(map->lock_arg); - return ret; + return 0; } EXPORT_SYMBOL_GPL(regmap_noinc_read); =20 @@ -3149,22 +3093,20 @@ static int _regmap_bulk_read(struct regmap *map, un= signed int reg, u8 *u8 =3D val; int ret, i; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 for (i =3D 0; i < val_count; i++) { unsigned int ival; =20 if (regs) { - if (!IS_ALIGNED(regs[i], map->reg_stride)) { - ret =3D -EINVAL; - goto out; - } + if (!IS_ALIGNED(regs[i], map->reg_stride)) + return -EINVAL; ret =3D _regmap_read(map, regs[i], &ival); } else { ret =3D _regmap_read(map, reg + regmap_get_offset(map, i), &ival); } if (ret !=3D 0) - goto out; + return ret; =20 switch (map->format.val_bytes) { case 4: @@ -3177,13 +3119,11 @@ static int _regmap_bulk_read(struct regmap *map, un= signed int reg, u8[i] =3D ival; break; default: - ret =3D -EINVAL; - goto out; + return -EINVAL; } } -out: - map->unlock(map->lock_arg); - return ret; + + return 0; } =20 /** @@ -3310,7 +3250,7 @@ int regmap_update_bits_base(struct regmap *map, unsig= ned int reg, { int ret; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 map->async =3D async; =20 @@ -3318,8 +3258,6 @@ int regmap_update_bits_base(struct regmap *map, unsig= ned int reg, =20 map->async =3D false; =20 - map->unlock(map->lock_arg); - return ret; } EXPORT_SYMBOL_GPL(regmap_update_bits_base); @@ -3452,19 +3390,17 @@ int regmap_register_patch(struct regmap *map, const= struct reg_sequence *regs, return -ENOMEM; } =20 - map->lock(map->lock_arg); + scoped_guard(regmap, map) { + bypass =3D map->cache_bypass; =20 - bypass =3D map->cache_bypass; + map->cache_bypass =3D true; + map->async =3D true; =20 - map->cache_bypass =3D true; - map->async =3D true; - - ret =3D _regmap_multi_reg_write(map, regs, num_regs); + ret =3D _regmap_multi_reg_write(map, regs, num_regs); =20 - map->async =3D false; - map->cache_bypass =3D bypass; - - map->unlock(map->lock_arg); + map->async =3D false; + map->cache_bypass =3D bypass; + } =20 regmap_async_complete(map); =20 --=20 2.51.0 From nobody Thu Sep 24 16:07:45 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013004.outbound.protection.outlook.com [52.101.83.4]) (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 AF76453A389 for ; Tue, 22 Sep 2026 11:13:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075619; cv=fail; b=kCXy75IxlSsLYgSdfTDRRdnlS2GPPr+6bF1X6EEE2KqOIMBB4mNCcIWuLetWJzdTYx6b7ci/5UpZCTuDSlUUUkeidrIUlezr9pXGiOzzYeDJtXfTO+EW+HyFAsjLc/DUwCPEIt5MhN9L8xZAraCX+4XB5Gv/7A5GW+q+40GlMF4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075619; c=relaxed/simple; bh=cQuRanmRD090kakGkgI6WnaWm2d1UQYC2Dc6+Cv1fA4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=NMX2uBCIL9kln0v/hLUmahF1+uZ4xq3sTc3Hl8CJEb04Sj+1ljeyVyK6FbwbbMz3rCTv6LPBf71eaPwKId2RUOKVSba70jEI2jjvSGDTZXE8Fl0QLOBnqC6TTTxVEqn0uI78AhBDY6j+xsU/lprhcOE+YV0kPd9Qm4gRWeHFOXI= 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=DES4OHbn; arc=fail smtp.client-ip=52.101.83.4 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="DES4OHbn" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CHGkgUlt5S7GtlPVM4ucuEA2QIFfBDFvyavtiWm/UiOG+nEVsaW0HjP4zkKyneGxZZ+NjgGzTqNXMe0ZqxXfY1OrjUTtKBilie8QVnNWcK7MmcorEtnvOrkauMdEqnccR9qxVg/GuE37OAg+nDAZEI86xwLH43obpOHsAFRrGvYBHEmNkarQP2fYM5cTzs8VzWRLdDkJURUMaA1g7NecjQudHKa3SEvPcfmYhJa/IrKDqwXoTy0mqY79uPyPTmZ/2YW6wM52QSs943C+iXmnKxJdaxIxvtpQjchYBt/oxOu/RoNN/Z8QbzozJrBS3cfo1IUA4lRKYwZJk+5YEoG+ZA== 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=Ut6Z2J/rq6iFDeDKjaXl/xl0kqDwRjAdahzlO5UrXdk=; b=ZiEJ2ev05NVFZZ53rmnxguqqU/7y1KLicmsawi5G7+bHbACxHXUmzQ+ApLnGGYKG3cwagaokbqhSFsJSXUUgUJEDe2uaKY5SmHq562kDmkQWZ2dUtwEgUd8xSrmasHJnjtErp5epHMmA4Z0f2XciU++KPkiVH2Dh+gxbQJzyTE3ulptL1/CrCL9J2gxW82dhOxsNMxk2VD87MLVak+IP7tMlesUTCQGBwhSKXNJm+vknqx33Up8kW39crJCtQAuqO8ZnWIqNEUnf7TZRyucbhYyOo+vJtldlUc153nmu7NmzVt+TizKPypc7VIgPb0CgM+wajqMriPhnDE969SWEEw== 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=Ut6Z2J/rq6iFDeDKjaXl/xl0kqDwRjAdahzlO5UrXdk=; b=DES4OHbnvLDPUIGMQeZxTnemmhBKgx61Gsqta09OtpX8o0zBdrNG76mbQTbE6kePUTF7gaVyIkDKx1jU8+ebRCuGN0q3ulY6eK2QNVA0mM3We4JoaD42zpqEYJo1qT7ZL9qHoh4n5/I7EHDIVf2wYoUBPUok4eib8aACCn8zEw4fsMggsMkvr7+lrIQsfM4Uzf6jOVCSKLhTke1nqF/yW4+EDvkjMKloA4pwGwXOIwvn52kePFf+vVaiwuTWjoJv5F1lhAIekeY1nb8pXg/WsJg0S/+dGhQZ/bLc7qqJohIbEBIega+HCSceMw8nbsrvFHNtLTapslvwtCVSPAsLwA== Authentication-Results: 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 GV2PR04MB11191.eurprd04.prod.outlook.com (2603:10a6:150:27b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.16; Tue, 22 Sep 2026 11:13:35 +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.0428.015; Tue, 22 Sep 2026 11:13:35 +0000 From: "Peng Fan (OSS)" Date: Tue, 22 Sep 2026 19:10:56 +0800 Subject: [PATCH RFC v2 2/4] regcache: use the regmap scoped lock guard Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-regmap-lock-guard-v2-2-0c9d426427bd@nxp.com> References: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@nxp.com> In-Reply-To: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@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: SI2PR01CA0012.apcprd01.prod.exchangelabs.com (2603:1096:4:191::8) 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_|GV2PR04MB11191:EE_ X-MS-Office365-Filtering-Correlation-Id: 23ffc369-8625-44e6-27d5-08df189a8b1f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|1800799024|23010399003|10067099003|56012099006|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: 5Wfquyk02CQdGKrukCD6UBQ8iNk018Jja/lSSoYR0CQ6e057BpnBC6JwdAFhjesd6Pboe/uwzGnRrNuTMj/7p1MjuSZqLFRrd9Go+4ifHKkoKE2r58wkZLJBRVhESKZeNJXgCPPGN3ZV9WEYNrv0L4Oie7bnqTEWfm34D8rRtriJl/tlXG2d8wThOBc4szN+G2icUv7/x6imTPLLcjYl8vx/uSVZ//mLmAufKWe0Fs97Z9uh5mT3tiv2xE+y2TMiU8XT+/4sCEokFCAjbRZwum0ywNOffjEubHZ74sskBuZuVj6cB+MUtvtp2juCzk1U1YgBdCgvaKQ5HaDNdLDCc/1eIaOHzlwO/Sibs1D+HJe+jR5DHKtEdSMXzqwGWVxpxp25PpfHxhws3ZRC8kHdPV0+APk4GGA9uOZBWKPBSQIKy8Y9TIyK3C2fODEDxNeod9lww6XHUgYBv1jjsa6c325UTXry4ZFu+fCyPvlTl1qYKqAqdb4U+HtLP3SCpxyZfRcUCYk6IR5hpl7C1/HKuF8RGf92bZ4t9hsV/APZd0rGf9mVzPQagM7XC27Cgi9jWWQDB1nrG52ND6bpXf1Lc2ZlxETky637LiS2BwxQS/7nlJAnIBjqlIHUEx7hiKHSu/UdNIthWj/Lpdij2GGmIWRD6dnI2dGaA6EjzhG+fyU= 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)(366016)(19092799006)(376014)(1800799024)(23010399003)(10067099003)(56012099006)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZHFUY3o0YldWbVRCeVJBVE1IVUF2Z2I1cENGd2p0UW1OeXVmc3NkeGk3SUMr?= =?utf-8?B?MEp4UllVeWs0Z3FmNDFTbTFTbVBjS0RhS0NOeDBINFFpdXZsdmlLZ25mb01Z?= =?utf-8?B?YS9TTEkyL1NDMGRsZVVFVEt1SmRMZm9rOVcrUHgrK0ZpOWZUakNRNzFrSisr?= =?utf-8?B?NzNzSy93L0lzekpmN05hekVvVDlBQnJscDJBNWNKL2xwa3FyY0xGWmdHRzJJ?= =?utf-8?B?V2lvQmZmOWptWk1EeWZnRE1IR0tvWWRqQWpranVYMWliNkFCTjFVVkp2Q1hh?= =?utf-8?B?RjU5TVdIOWF5S0JKZ3labzBzdHQ1R3NKamJ2YThwMmR3aUxiNmsrWlplU3pk?= =?utf-8?B?RysyaHkzWGRRdG1WZkxjZGVQdC9OanFsUnlBZHZybER1OTNCblExeXRYbmJR?= =?utf-8?B?am9ydXl4VEpXM0pVc3pyanAxcGZ1UzdLLzlnbmFOT0pkeWc2MHZaYkFVbzN3?= =?utf-8?B?cm5tekZlelVKd25yM01xbEhaaStFNEY3aUc5WEo1T3g2eEZwd3RiaURNU01O?= =?utf-8?B?SlhqbURzeXlWVXRYRVd3WGRmVmtaeGVkQzVMU2xSZHVwYVJCdUxaUE1KRGlG?= =?utf-8?B?K1FvWGhERXBhZnRYZWRtelp2bFZGeTBGczVPaFFCVHk0TEhuWmJDUm5sQ1Rm?= =?utf-8?B?WUhXbUwvbnlaWFkvMkxOelRFQlltdk9TL2Z5dTJ5aXJOd0J2c3ByZUJxUnlX?= =?utf-8?B?OER6aEVUMzhaQVRnL0RVek9mMmpIUStPSm1uZmlMRzJNUzhTZytWWVdLUUZ3?= =?utf-8?B?dDM4R1ptMER2NlVlVW5WRDFBZmFrM0VhM2dxb254MU5JYlNEYTlCUXovK3Fm?= =?utf-8?B?VWdkK1ZtT3ovZENMTzMzSFQ4emlJTmI5cVJ3cVlkdnlidHQ2R3gzVXF3YWh3?= =?utf-8?B?RWVxL3ZVU0dhL0dSL29ZQ1F5dTY3Qmw4VmFsNFJVWU1DUUtaSXRobU5uWWhq?= =?utf-8?B?WDNqS0h4WWd3bU9KeFRENE83RFVBZjMzOVZBbVhRRVF5NzAzcUNUNktLbFdi?= =?utf-8?B?QVdFOFBMZ1V0QzdRTmdwSWQraU4xOGZGdEpBNGR0LzNJR2IzdERMVDVEdEFB?= =?utf-8?B?UWd5NC9Lbk54czBsWlViM1dmeEI0YWtZT091UmZoM1RsVFJLZzQ1cE9BQU40?= =?utf-8?B?a0pjZW01MDlQVC8xK0hmQk5uY2t0ZGJnYVczWitQNUZZbVpNTmx4Q2J6amUr?= =?utf-8?B?dlNiYTFtT1dIRm1HaVo3THdBVGtNMnZJVE1oRk5DcDY1MkxPd2hVVlYwbllR?= =?utf-8?B?RkszQzg1OWxOVE9KOVdRQlhHd0lWZUZKVk5ZamQxaUt3TVZxMThVa2FxTk9Q?= =?utf-8?B?WnF6T1dscEdDSTEyUE9hM2JIcmNNTkVER2ZQa0VwZFJRbVBNaWo1N3FqK29Y?= =?utf-8?B?MkxNR0FWaFkzS2ZPblFmblE4dlNwT3hmRlJreFBlNCs2cUhVSkQ3aWc1aDl3?= =?utf-8?B?SkJMeXZVdzBkWlVGU1FZZTNUMElqdldtN01KUk5ZQnJoQ3lodXN2aXFhQitO?= =?utf-8?B?MXBKQmJMUVkvemg3S1pWb2xDM2ovNW5tWjBlOVNRWEplV3hWaWhRVm1ocUU1?= =?utf-8?B?R054VDVXcnNka2c2SmhrZUVua2FIU1QrQkQzN0tGbnp5WnZmZ2MvZHpvcVhE?= =?utf-8?B?RnN1c0xWdURXTWpoNWF6bzJyeUo1dkNnampCKzFBcmxmQ25kVXZsYTBPYkxt?= =?utf-8?B?c1NObHcraEY1YWl3ZWIvV3F5TWh6TlZSQ1c3a0s0a0g1V1F6ZndldU5FeFp1?= =?utf-8?B?aUFwaTNTTnpDN1ZRa29LV0orSFVUUnhzY2ZEVUpqZXdhd3owaXZOcmxQVGh5?= =?utf-8?B?cTBSTXhCRzd0ak9JM0d0a2dhdFYrQkwzOUx6UnN1bjB3YWtFUlJpVndOdkxM?= =?utf-8?B?Wlk2SmdjNXpZcGk5b0tMWmtqOGpJSFpYYjBTalFielFWT0pJT3hCTjA1Y09h?= =?utf-8?B?QUZVVEF4Lzc2dExtZXZnVEFNMXhxWTZHRnIrMXZXb3dWYTkrUGp1UFNMNjVD?= =?utf-8?B?M2duSUpUMkdYWC9JR2FTSlM3TEdnZXdvbGZUNHRlUU10UXlqNXZQQWRWSk9L?= =?utf-8?B?eDg5SE8wMVRLemhLZWhTVXF6SmREVlJlZ3RZUUpkUDNqVzR4ejQ3QzJxMElK?= =?utf-8?B?d1hha0o5NFV1VWw4Z2lCTXRCazNCTmRLcy9Cdy8yQy9aQXVvaTFsZlhlZnBk?= =?utf-8?B?dkQxU3ZPTXljN3hsRXNCN1FEMVpzc1lSOFZ3cDh3dXBzU2tYYytYWmsrZ2U5?= =?utf-8?B?VW9sZ2I3YkRZejVXa2JmaFV3dmlNVW9xQmNTcHk5R1ZDdUhzeFlpcDV4dHh2?= =?utf-8?B?dFFXd0pTN2p6L3FSbVJkSFpnbVAyRU5RTWxuZUpCc3NtTzBoa1VlMXJZNXY4?= =?utf-8?Q?+GZ/I/oDRAINmg9QrC6VzN5yD2SGBr2AclhFG?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23ffc369-8625-44e6-27d5-08df189a8b1f X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 11:13:35.2264 (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: qVuTqlhmDPqFLvQG/U2fA67pxX51HyLUkQC4vIgRarCPd4+cKydV55AZPXvnvanpR6f9X5FaMPQZAQCfPh294KccgMUoXBMesg38jzG296O3Ets2e8XRU5PKIbf47ZIq X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11191 From: Peng Fan Convert the open-coded map->lock()/map->unlock() users in regcache.c to the regmap scoped guard introduced for regmap.c. Use scoped_guard(regmap, ...) in regcache_init() and regcache_exit(), where the locked region is a subsection of the function, and guard(regmap)() for the function-scope critical sections. regcache_sync() and regcache_sync_region() are left as-is: they already use a single goto out unlock path, so converting them would require either mixing a goto with a scoped_guard scope or restructuring their control flow, neither of which is an improvement. regcache_init() keeps its goto err_* cleanup ladder alongside the scoped_guard(). This does not conflict with the cleanup.h guidance against mixing goto with cleanup helpers: that rule concerns a single resource whose lifetime is managed by a goto. Here the goto ladder only unwinds the allocation / hw-init path (kfree(map->reg_defaults), regcache_hw_exit(), ->exit()), while the scoped_guard() covers a different resource - the transient map lock around each callback - that is acquired and released within its one-line scope and is never held across a goto. The two mechanisms manage independent resources and no goto ever crosses a live guard. No functional change. Assisted-by: Claude:claude-opus-4.8 Signed-off-by: Peng Fan --- drivers/base/regmap/regcache.c | 43 ++++++++++++++------------------------= ---- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index 0d58d900a2ca..d030fcbe11d9 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c @@ -225,9 +225,8 @@ int regcache_init(struct regmap *map, const struct regm= ap_config *config) if (map->cache_ops->init) { dev_dbg(map->dev, "Initializing %s cache\n", map->cache_ops->name); - map->lock(map->lock_arg); - ret =3D map->cache_ops->init(map); - map->unlock(map->lock_arg); + scoped_guard(regmap, map) + ret =3D map->cache_ops->init(map); if (ret) goto err_free_reg_defaults; } @@ -246,9 +245,8 @@ int regcache_init(struct regmap *map, const struct regm= ap_config *config) 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 =3D map->cache_ops->populate(map); - map->unlock(map->lock_arg); + scoped_guard(regmap, map) + ret =3D map->cache_ops->populate(map); if (ret) goto err_free; } @@ -259,9 +257,8 @@ int regcache_init(struct regmap *map, const struct regm= ap_config *config) 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); + scoped_guard(regmap, map) + map->cache_ops->exit(map); } err_free_reg_defaults: kfree(map->reg_defaults); @@ -281,9 +278,8 @@ void regcache_exit(struct regmap *map) 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); + scoped_guard(regmap, map) + map->cache_ops->exit(map); } =20 kfree(map->reg_defaults); @@ -584,20 +580,14 @@ EXPORT_SYMBOL_GPL(regcache_sync_region); int regcache_drop_region(struct regmap *map, unsigned int min, unsigned int max) { - int ret =3D 0; - if (!map->cache_ops || !map->cache_ops->drop) return -EINVAL; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 trace_regcache_drop_region(map, min, max); =20 - ret =3D map->cache_ops->drop(map, min, max); - - map->unlock(map->lock_arg); - - return ret; + return map->cache_ops->drop(map, min, max); } EXPORT_SYMBOL_GPL(regcache_drop_region); =20 @@ -615,12 +605,11 @@ EXPORT_SYMBOL_GPL(regcache_drop_region); */ void regcache_cache_only(struct regmap *map, bool enable) { - map->lock(map->lock_arg); + guard(regmap)(map); WARN_ON(map->cache_type !=3D REGCACHE_NONE && map->cache_bypass && enable); map->cache_only =3D enable; trace_regmap_cache_only(map, enable); - map->unlock(map->lock_arg); } EXPORT_SYMBOL_GPL(regcache_cache_only); =20 @@ -639,10 +628,9 @@ EXPORT_SYMBOL_GPL(regcache_cache_only); */ void regcache_mark_dirty(struct regmap *map) { - map->lock(map->lock_arg); + guard(regmap)(map); map->cache_dirty =3D true; map->no_sync_defaults =3D true; - map->unlock(map->lock_arg); } EXPORT_SYMBOL_GPL(regcache_mark_dirty); =20 @@ -659,11 +647,10 @@ EXPORT_SYMBOL_GPL(regcache_mark_dirty); */ void regcache_cache_bypass(struct regmap *map, bool enable) { - map->lock(map->lock_arg); + guard(regmap)(map); WARN_ON(map->cache_only && enable); map->cache_bypass =3D enable; trace_regmap_cache_bypass(map, enable); - map->unlock(map->lock_arg); } EXPORT_SYMBOL_GPL(regcache_cache_bypass); =20 @@ -680,12 +667,10 @@ bool regcache_reg_cached(struct regmap *map, unsigned= int reg) unsigned int val; int ret; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 ret =3D regcache_read(map, reg, &val); =20 - map->unlock(map->lock_arg); - return ret =3D=3D 0; } EXPORT_SYMBOL_GPL(regcache_reg_cached); --=20 2.51.0 From nobody Thu Sep 24 16:07:45 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013023.outbound.protection.outlook.com [52.101.83.23]) (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 3992653A3A4 for ; Tue, 22 Sep 2026 11:13:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.23 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075625; cv=fail; b=rKrzo0tIf3HbpPqIa3C/6puWyDnh3hqWMVZCRoKt97AkCfmWDUBRYBQYW3uLNAsHLr9ALjBNxGfoQ9NDZYtg0Q/u6AwMJxIx5vkptNDIi8p7Y3//UrAJiMlsw6MJyf3HLHjUF3HyI58G+VMuYKjmsAYG4opKEqp1XokpBXsZqKw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075625; c=relaxed/simple; bh=WbRDC37uig0N60EAsqxrvM4g0fQ/+Wp4srJdR3I18LY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=M8l9O5yx+kXsgFb0AIIUCDWfX7KLsDJmRnlATVwYnSGp5ripsSkVLkqAHVdHc2T0LAFqAgL8s9AgbE0SZ8TIAQV67n2TYXH0YKlyoNgEPcH4pUrbUDq63UofK8xqVRwpe5InUuRJ/KfygwEKXbUv1LSDdTWse9HXEOw6220SVN0= 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=bQd9ARqX; arc=fail smtp.client-ip=52.101.83.23 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="bQd9ARqX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M5SdsUyYugxCKRZgMfM/VaIdaOq2NhIe97PJFmZrFLVs0flQt3RB4P+5aaakYel0WLswLMwuNSzSh7oQraqvH21aM/3W9vp2J4eXAKe5oR7oAxM0vOFaqhely1xXF/A1nQOu8JKwBmeG4iETzJ6lzY+VY2J64O+ZKYtIrVarYWQ/ykZzDn3X9AOYjXBhOTXM56JgwzFM8Sz+/LGsnPhd2qDO8cZM18oWZH05PBWpgTiV07pc3R2a2hz7DRNVSpAebEcmamZqhmjqBEVflnHiR9c25nLZlnM3Ew9R8TyrG3llKYzbv2YrWsWZeiZMUkFl/oqjAosF4FafuNE0Vqu75Q== 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=3Vaxc4CK8aQcE3BPY0Zz4fTuSDePI6IScfYAT7hKa78=; b=elL5WFsgYEjNpvKp4bcgVSNSOR5LXhQ6NkyTzCC2d+NYf5/X1cZLPcRWJobxQuXtZz/DECJu2sfq/0I7uZIw3Xu/uRobRUl3snyIugu1JRf7aoC/+x5CD2HAq8mxTYrBPMJHPiXgo9Zzw9fdwQBprTPe4E0GHsEC3e6DxwcU7jlOV/GJZnancMpL0HtVB4nkLPZ7cCj3iCuwT/q9RWYMP0oLmIq9jZ55rQsIZqfeOW2xPB+mjJ/mDrrHeGgxteK2nxEOF5/IPjGMZx4zQ9XQ+XenbOFlSKtZZQT4swS1/yloXCUH2zl5tFQyYQ+5GJjvDpJffNi4kG4KL4PwIcQlqQ== 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=3Vaxc4CK8aQcE3BPY0Zz4fTuSDePI6IScfYAT7hKa78=; b=bQd9ARqX16wQKHwxRjsgp31k/H74NUqo++PabX5IZLezlS1bULmfpSgKa0iRaSgNPCDt14qHlOubjzCsgT4HKi6b0b1oH54RkGTp8H4PoJH9/Vr0XXxc2BTBhGptQSJr/qwpHO2bCH1m31bSYpmvkoOhO2TCCIR3sv4mLKvrj/2xWX7Bj2fgFNr2Hl7fR1nUJ8u09MOT/TPpnuDz54GxwcFIuwshJEd/tk+E4pwDo3kGbgSYg6GyktxUhVarYFamucxbjtnE5W0bkwvpvXJpwF+FXGq/oJZgH0gJr9Ct14T7NdcfwFRvazr3Jb4XLgICi1iVU71NWPGvIhnJ+l1E7g== Authentication-Results: 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 GV2PR04MB11191.eurprd04.prod.outlook.com (2603:10a6:150:27b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.16; Tue, 22 Sep 2026 11:13:41 +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.0428.015; Tue, 22 Sep 2026 11:13:41 +0000 From: "Peng Fan (OSS)" Date: Tue, 22 Sep 2026 19:10:57 +0800 Subject: [PATCH RFC v2 3/4] regcache: rbtree: use the regmap scoped lock guard Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-regmap-lock-guard-v2-3-0c9d426427bd@nxp.com> References: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@nxp.com> In-Reply-To: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@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: SI2PR04CA0003.apcprd04.prod.outlook.com (2603:1096:4:197::23) 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_|GV2PR04MB11191:EE_ X-MS-Office365-Filtering-Correlation-Id: 629efe1a-c9c9-45f6-8389-08df189a8eb4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|1800799024|23010399003|10067099003|56012099006|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: fVlL5bywsOhNDF3xsLV1fyhbHPw8ip913yQJGNlTH+MlRp8Rec3z8TU6xf99oXcinOawCwTBvGLdbauHusgqAFzokeloIPZfKJEVy45ibR2GjK5UWKaB9eAl3tsZHTxNtVR5Ucgp4IU6Z6VEg6zkr+c/MTn3Bkgpuh6G2lcgpNk8twla44RD6082wsT+JLZFv65dEA4ecmVnKuL0Y2wvdESvC/lw6cLNmP0hUQ+hygbAfk2RDzhTQeQgL00pOYW41mc2JI4eMryEwVCH1vB3hxUWRz2FSLExOjK9bgzHDOCTmpvlcZBeuH8jlDaiaGa1a1Oypq04UPibtWa6dSiLqWdjsgg0zxALglIL+8WNBZ71cs62v8pjisTYQg1Y0wp2HbLWN/KCl+ia3Pj52V2JCcnJNOw6dzRzgFTNRBisunuint/gRZCTtHZydI8NoTivJf3nqLBJiO6yVFkeCN8Ms07us7Yffs4Cc3Cvy4tkknpMnk007x0gd5nBEVD418ozjQ0Exl0Xhme74CKoFyBztgLEcFaw4zTBuMAc0QLo9+AtLRUkhiBNhJnveNF0bUvZLmcBhUTVKfIgM5RSmNhgmggSGR0sNqJp1+sie2SRGxIYh3WLbVHs/F0tPRbtnz4YOB+AFIyl8cdvztudXN6pZgYAfeUKgL2b/xFZYAPW2wQ= 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)(366016)(19092799006)(376014)(1800799024)(23010399003)(10067099003)(56012099006)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VmZXaFNJYlpFOVVCRGNpWGhxc2VXVGFKRDE2alFvSEF0MmdnaGZRNlNWOTFS?= =?utf-8?B?SmpiN2o2Wlo0b2lhQm5vRnNvWDlmc2VGc1V0eU9Pb0pyeTBSeHJ3WklhQ25t?= =?utf-8?B?NVlzU0c0cytjMUtQRGlEakpmZkNuK0VYL2RkV2VqUlpWMzVqZ2pXNHdJRCtz?= =?utf-8?B?UEZFdlRZQkxmMS9KcENOL3pQOGFBRnFSM25EQWNYMDE0VnVOTlBzeU02UGJG?= =?utf-8?B?U3NMS0VJOFE0WC9XUnNjODJnaVJZTDA0a251MnVKNkVyL3FrZUNMYUpleUpi?= =?utf-8?B?NTJjdWdTNG95WDRsRTFxSkZGVVdTMXVPOUhKd3FZckliWEw2QjY1SCtWa0Za?= =?utf-8?B?YkFWZlVGK3ZBOVlUUW1xdzN1aHVQZUhEcUgrazBUVm04ME9LUmNxVHlNRlRs?= =?utf-8?B?Qjc2SlVCM0FXN2pRRzVWRFBBQkJLaFZYNmtUQmxwZENhalFaVjhGWlc2VUpV?= =?utf-8?B?MFd3aXU1cFU3Sys5TWlVc1prR2dBemFDZ0hVQlhidlBsYlpsNExjUm5mNnBp?= =?utf-8?B?c3Y2ckowdHU1YU80MEE2UzV5NGVQQUpHTVBiRmV5VWhCV29WbUFoN29zdHds?= =?utf-8?B?Vi80UHdvRHBLZzZuNC85YzhPK3FwMHI5MXdSM1FWM091YXhZa3hTbklmSFJJ?= =?utf-8?B?ZVlYc1dpZ1NBVUNuZm5rMnkvZkVXYWViakRaV1VDSmZEejRoaGRMLyt1eUFJ?= =?utf-8?B?am1NSFc1Ykxkb3hzenF2QTJmWTBVM0VwWEluQkRRRStSWUxzVkRvTUtCMjV0?= =?utf-8?B?T3lEbUFMZEpXL2lqcmVXdkF6Y1dJQTVIcUMwenpuU0xCS3lOYm82WG1RNHdL?= =?utf-8?B?SEZLa0o5YWFSdWNjVHhpeE15MFQzOFdOQnpkVEtNdGRGQk1xNC96VXRKTElG?= =?utf-8?B?cGk2UE51VGRwS2p1blpQNmR3R0JLU3lqQk96Z014VmRMcmxjWG9IaWRoZ2pX?= =?utf-8?B?VHFobU83ZG9kRlovdmlFVFZVcVBUSHJYMFFIWm1ydUZrdTdCVDQ1LzZNeXNY?= =?utf-8?B?NlpGRVN1YS9EUlhaTG1SRzN1ZkFSZmI4QTA3VEdyMldid09yZ3hLUkw4RDJl?= =?utf-8?B?cHg3ekJVdmE1VGdyZEd3Z29rM2NiRkJkSC9wOG82V3RtV3JvdlJiRmJXT2dY?= =?utf-8?B?TlJtQTBRUTJiZVZySURLb2RGenk1eWZjbGVuT1B3RE1qaTU1SjQ4c3Z3Z1hX?= =?utf-8?B?S0ZwQ3l4Z2VZZkZaVG5Ld08xYzhjbkhmVXh2UkVObFBRMDMrU1QxMjk3alhs?= =?utf-8?B?Q29IZDZoZC96YTJma1h0eVV1OGxsWE5MR3lNY1ovLysxaGpZa1RGVFZOMnJQ?= =?utf-8?B?aTFmVkJwQnh3QXZRZWtnY2g2bWgvbmU4cUt6cWM3OTRSdzVUQTJ6TDJIQkUr?= =?utf-8?B?ZjlPVHVJTlNGbnUwakVOOWlaaE8xazhBUmdLaURNaFlRWU5XV1VpV05xdUpW?= =?utf-8?B?NVpBV3hiTnp2MDlzM3ByMHk5Ry9KNnVVY0ZaVlJCUEZPTjh3eHp2NVVHdGp1?= =?utf-8?B?MUlNQjlhaXJva25wRXJBTHpHdjlQQkZFRlVmTW96TWdNMllxRGNKNU5EOGxG?= =?utf-8?B?ZGpqTE9rWSt6STNXWDB4Q3hwbHZVdEI5c25RRmZ6UnFZUHdMRW1jZkNBZXhZ?= =?utf-8?B?Z214ZDM4dEFoWmVjNE54UDNiQlRRWVhqZjZyb292d0Y5eDBKOHV5bXR4TWl3?= =?utf-8?B?OXVybHorall3ZDBzWW0wWnc1WGR0RENScTEzUUpNV1hGSlFyekdYS0tZOWhC?= =?utf-8?B?Z3NhNXZjNWZ2YjI0bGVpRGVOVjF2SjBadkNqdUhubldaWlVOc1pEVlRiRmE0?= =?utf-8?B?TEVTWmp3dlRPMFZYdlBTMUVJVkNRalBjOGg3dTZWcXZLMXdvdW4zUGZ3cnkr?= =?utf-8?B?Rm5mRzRaZXV4VjNKVFdCdVBWenpFMzlLeUJNZ0FBeC9wQmNaY3JxVXp5RjFm?= =?utf-8?B?QkVjNGZQMjlMekdjSzQ0RWF3a0FlNnd1NXlaWTBBbHFJNU1aVmJybldVNE1z?= =?utf-8?B?N2F2RE1Mb1BGbUJLaGtIeDFPbkJqaGg0VUZ3NHk5WjVIOCs4MVdtVytZTTlP?= =?utf-8?B?QmRiZklOMzRMZmp0dWJBQnVxdXRQL0NSODNZQmE0S2NXS0N3eUt4dHdlMm5I?= =?utf-8?B?bHhMQW5QTFRFZ3oxR2syVldNZzRkTWQvODQwazQ2NEhDWTQzWE1Sei9SQXFl?= =?utf-8?B?Wll2R0VvNzRCQkhRVkdrQm5DVXZsMjZEamdhY24vcXdvYWNFaFFka1ZLaDFL?= =?utf-8?B?OTJoMVV2QVZ4RUE2MzZGb2dGQ2puVVIyMkRNdnBrL1ZsenlqYzVZUFF0SWIr?= =?utf-8?B?aldONnVMVWh5YWNWOGtYZUVwUXcwQnduYmM0cTJJUUFYWlFjQWlodEF0Vmx3?= =?utf-8?Q?XamRBiI80mMuQTBZ7xt7YBsgKfYk/zORK/owg?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 629efe1a-c9c9-45f6-8389-08df189a8eb4 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 11:13:41.0705 (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: L+k+/UYxq9KoadvX+qoBejVsgPNgYo9ZOD4VHE1/JlyO11MmfkyTLuosspVBEOh/h3LGymDQPUy8UgJE6POrKfDrfZ6yV9mIU4Qjod9TWn/UwNGHtLBbHftXjsS4RwQp X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11191 From: Peng Fan Convert the open-coded map->lock()/map->unlock() pair in rbtree_show() to guard(regmap)(). The locked region spans the whole function body up to the single return, so a function-scope guard drops the manual unlock with no functional change. Assisted-by: Claude:claude-opus-4.8 Signed-off-by: Peng Fan --- drivers/base/regmap/regcache-rbtree.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/base/regmap/regcache-rbtree.c b/drivers/base/regmap/re= gcache-rbtree.c index 520d5f8ba3cd..e2feed6dbecf 100644 --- a/drivers/base/regmap/regcache-rbtree.c +++ b/drivers/base/regmap/regcache-rbtree.c @@ -141,7 +141,7 @@ static int rbtree_show(struct seq_file *s, void *ignore= d) int registers =3D 0; int this_registers, average; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 mem_size =3D sizeof(*rbtree_ctx); =20 @@ -168,8 +168,6 @@ static int rbtree_show(struct seq_file *s, void *ignore= d) seq_printf(s, "%d nodes, %d registers, average %d registers, used %zu byt= es\n", nodes, registers, average, mem_size); =20 - map->unlock(map->lock_arg); - return 0; } =20 --=20 2.51.0 From nobody Thu Sep 24 16:07:45 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011025.outbound.protection.outlook.com [52.101.65.25]) (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 59B39539789 for ; Tue, 22 Sep 2026 11:13:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.25 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075631; cv=fail; b=G3foAvOlywSbvAcVTTadf0cHQleDgOilkDJusfaWSlfDdTluYBaBG/O9VM6ov8fRhqmSBV9FxFL+ZbuU5Us/gX5MG6y3/KlEsndPMEN0xCTInv9iz2XwS+YSWORAyAkJ6A7XVxk9b92Xw/iHHgGV3qLxRHPH8hXD9+Hnh27S7yE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790075631; c=relaxed/simple; bh=63A2AFH/qGSjediDkS/PvJ8MNNDbSwsXZkG+Qc1w33A=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=t3PLx1s4Marr6WBjMUmW+33FESxyYsDXCYwdel9iupVgnNelLF5vdtbWIPyLWNY3sxRMZO2LUeTiTdIj8vhcaHf0dEFyIu42DaSYlz0/vxJRxGqeZ95zdsZlbCQy685hyuUI14c61VOKnAN1Ar1QWycx7znmLw3/C4oO6peVwOc= 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=R4RIg7XV; arc=fail smtp.client-ip=52.101.65.25 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="R4RIg7XV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wk3j/lA8NaqZhH8OjC5gBLSXSJhQykUIwjWEiG5RCsXpEMjzmZhle9gBgtlvPff7UNSIsYxQ8VzoYgoe9ZQkaRZf1h1SmyBnSlqGcBFtFwwcwaMVEDpnjTnsL2R3im9mnavNDIOsPjQgK4zme7bcF6TDzQHHhNvwKgHYgPl7VpdYb70PxIByUJdQe3xGwwmxsKJujgTgoKxpnsgxSrKrMUTPUYjT2vKx8Y9sXEtG5+lP+1KfTUFHLZJMlrOyoGaedkJ2U8f0kRX+JLYweUzBCXNyGh5Td/9h3BxqeAGl8JXvRePBt4ZeSkHC9qDnRBq9JvjM1FTTsGiibg6hMtYdsw== 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=yiFnZQGSXcOViRbBNJ7tn3Qo5hszctgk56ZUFp6TTfg=; b=P00tJuiwVgPn4+mzY2auuAFv+wC5isnNKG9y2cEDLc+L9GFMpgSRp4Pzj5BoG3EktCErjotMv6VQFG0aBmxlIaulEtRAA7LBQpFi0tW2j5v5fNpWe+Xh9R0Yq2QEVydiZVZ1NG8GKKgsw9s0sGUBF31rtsIRlXk0e9+KulYPkTVCrFk4zoX6dMWyUWqkGunqJ96fErKoX9r8ahOY57nYkD7OAEziPKUvN+rfbGvC6ofc4sD1aTlP7WMU9Tf4qk0Nvayq3P5ZExx3UQjgVkd0wnbEvrMOPVYuriIO3bXWaNkJJV7utAdYpHMvE/LuHmsqWq0nRRj67bHe6ef/XQ5jhg== 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=yiFnZQGSXcOViRbBNJ7tn3Qo5hszctgk56ZUFp6TTfg=; b=R4RIg7XVcZCzPqhsSMMZ9mEPkTmXR8R+vjGDubrEWww37Djlc3DR0gnyzC1r7J4bbjVXcDNsd9+RfBQgvPoTBy2726NbgqMS8eZL8YoyjV8ZEeI9kZ0wVVqngD8F7OXAhPLP02qOSzAW/y0ZarD+1yvNVx5/QNqBmUspL2QB89r1s2iL5uTWaNBR6+tV0qn8J7yA01l2Fs6UHeE7TJ+L9f01Qp3zPXjbOCMK1KY41HQEvawTEZiJ+G7gWl3QYsUkfsfzmms98ytoeNQnlWv1cvALioTlP6cULVv7+zPlMWFiA4DAKDF3mrv3O5GluOikO9synsLBYBzbDDahLn2Rhw== Authentication-Results: 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 GV2PR04MB11191.eurprd04.prod.outlook.com (2603:10a6:150:27b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.16; Tue, 22 Sep 2026 11:13:47 +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.0428.015; Tue, 22 Sep 2026 11:13:46 +0000 From: "Peng Fan (OSS)" Date: Tue, 22 Sep 2026 19:10:58 +0800 Subject: [PATCH RFC v2 4/4] regmap: debugfs: use the regmap scoped lock guard Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-regmap-lock-guard-v2-4-0c9d426427bd@nxp.com> References: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@nxp.com> In-Reply-To: <20260922-regmap-lock-guard-v2-0-0c9d426427bd@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: SG2P153CA0011.APCP153.PROD.OUTLOOK.COM (2603:1096::21) 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_|GV2PR04MB11191:EE_ X-MS-Office365-Filtering-Correlation-Id: 448e6134-dc60-49c0-ae95-08df189a9243 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|1800799024|23010399003|10067099003|56012099006|5023799004|18002099003|22082099003|11063799006; X-Microsoft-Antispam-Message-Info: MbnCjV85BXUqedjNQMbaHyD8hvF+Jp32n7Uz6njTCCR8fGtfYYG6if4CU4dQD6kOQ/QdIBgirNabHaxSjXzZ1l/OyF8m6+YoN+7DjFfJ1e+D3+CjAlUM6hcsJRhfq4frupywy1S4BRdrjalo8bp2IqaVzHsl87Sr5wGM1MGWHetuGxF0+8npZmmBUhx/2M9z/TwBO24Zwj1o0wfu6MB78UL+tEluXhayaVhVXoyeUHEAKJfWEhdNLLoxQY80zKs9B80RMz8SzKenXv/PniHD7vKxtwxI7j4PUeUTYSqtK+WvjlycTvLlFsyfqMAPgFzdFiSS8AUpnZT4w/oEDTWYneLXV0BxgV1wA282nCmkDOoBX/T0ZAlzr0WZ1Ub6T4k8kwsea5Abl+WAh0yqqZY8dpWZ0kxGrX58hW4AXAo7fRo7LVbjm0N8qT1IMCpCOy6oaebqoFe+bhu/2I+qfXv0f2ARrF+X1MDMRnQCOZYXft+Apn41AMAoRosLThb8IcImVz++SBR+ikMBlAVIfU/8o19aYdiiKNlINUa1ID4YZP8inZkQLHLW/arLLpplUyX7Fm4Eegjr/egAov7MzJDKJFEnGvKzJjcpFbURpyuIgWD5QXuPz6v1Be61bF9tXt+IlWvzGpaxqmweBiD9B9KMaKVDVO4+Cnnk8f/hbsx+uxo= 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)(366016)(19092799006)(376014)(1800799024)(23010399003)(10067099003)(56012099006)(5023799004)(18002099003)(22082099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?allRMisyTzJWaktZMHBFVDFvT3VYQjVoNW1WajVpd3FRU0F6V0tUdTlwVzc5?= =?utf-8?B?Mm9LcHA2Z05FWjZLOTlpMVJYYzlyWjBYY1BPVHdCblk0ZGtNMFp0VWlXRm5x?= =?utf-8?B?SGQzOHpDNFhXZ3U4b1dFT0FNeGxvaE9QaGlUZW1lNUp3UWJXMS9CaGpCSkdw?= =?utf-8?B?ejdmaGp4aUNiUGhIS29YWEVHMXFwdXRIWnR6VVZldFJ0ZUtqTW9sbkZLamVo?= =?utf-8?B?aVlBWXRxbTBsNUxtTXN3VnFLMlhKeUhSa1NnaFMySG9QajB6MzFGN0FtVTYr?= =?utf-8?B?Tk5scHRTRVl0ZTM0UjNKZU9QODZORGZFeUp6dnBkTXQ3ekhSOG0xVXJGeCtX?= =?utf-8?B?dEhxVnhOT0dSWDhLTFNya29nNVlkYjZnRDZDajFVOWFtcEpuL21uR2RGbjJv?= =?utf-8?B?TWx6aEJwNW5FTmxzR3pOQ29uNHlmQnBWN2E3UmxZOGNFR2JFVHNWVmEwbWZT?= =?utf-8?B?dEJCaGtBSGlUQ1lGd0xKcWNKM2pwYUVFS0JnYVZOTnN2QnZhM2YxYmU4VURH?= =?utf-8?B?bzRzdHUrQWFJZmJLK2NwSm9MZDZXN0dydS9oNDVYcVBxYjdlOUNTREVFWUkv?= =?utf-8?B?dk55M2lLbVhVVGorb2JxbWJSTzBJdGV2bXBES0RTcmtPZ0xKVktteFRReUI0?= =?utf-8?B?OE9hbjBwVnJzUVZPTXBZUU5VMnIzODN4eEQ5dVVzZzNVOUYySVU2Q0p0UVZZ?= =?utf-8?B?WjA4a1lPdTltQUduVDgzNGo5a0NUSmhaZHMvL1lVQjloeUpIU0hUWGtzdFkx?= =?utf-8?B?MVRRRDZ1MWwvbXpqUmx6TjFmamJOUndicytzamRhYTR6RnF0N3Q0UXNobC9W?= =?utf-8?B?cFZaV09RVFNjbEhtU0VMcENXZ25QUGNWWGcvK2RoVi9HNzAxbkNDRGRyT3Zy?= =?utf-8?B?M2J5dWdrVDk0czFJTTZOdzQ2NVJQcEhOaUhCRmRicVRxaHArVTExUmcyRlhk?= =?utf-8?B?bjQxMEZ2QUltejBtYkNqV1YrOXloNHBHNGhJUlZwelpzOVlMamc4T2o5SG1n?= =?utf-8?B?UFpuaDgyZUxib3Y2SEVySDJTeWNVcUlaOU5nODZveUNmaVg5enptQ2FzYjJY?= =?utf-8?B?NFAxY0RLRUhPTzhaWE1IMEc5d0Ntb2tiOEowQUFORE9FYkdRZTVsaC9DdGVB?= =?utf-8?B?OFE0UUpkazRQd0xwamVsMG14K1hqUzl0eWVvMXNMSFdnN2dUS20zYTFFNWNV?= =?utf-8?B?a3gzTXJvYk9jNkNsUmZGc0tjQnZ6VDd2K2dQT2tmMUw2eXRPeGtuZWlTT3Fh?= =?utf-8?B?OEEvOXVvc0w0S1lFcnoySXovSWdvbmIwK0NkUzdqTVAxaFM3VGJwQk5FYVFj?= =?utf-8?B?UjVMZ3Q1Sm9DS2x6QmVVRUtta011YkV3RHBxVy9iK3NvaTZkUXo0azFsaktj?= =?utf-8?B?M01pK0s0YVpHKzBMbUJjZFZrc05LWS9jVC9oYmJHdHZabG0rMmY4KzU4ZWI3?= =?utf-8?B?ait4V1FEVEszb1gyelFUQjBRNWtzUjV2eGRUVGRRN3JDY1ZMRk9COGFBUVZv?= =?utf-8?B?UlFQVG9JbHZ2dGVrWXh4NGdjWWl4QWJJKzJka24xaFlFR2NLZXVFOUh0Q2lk?= =?utf-8?B?YXJkMUkrWForRCtrUFgvbHJ0UEpXR2FTT0ZOczBOajcvemJoWUhsSDA5ckRD?= =?utf-8?B?UzdnVWJWUDR0eDNwRkgvdklXUVRRR0lMa2FLR3haV1NuNkE4d2d1ZENEa0No?= =?utf-8?B?UlpKdkJGSG1kbzNRVHp3NSsvUzFxVUpFTmludTlDU2ZpVXpVdXBGdWRPbUQ5?= =?utf-8?B?QnlTK3RaRkVlY3BZdC91eUZiVi9tT25TWVc4anBvcWpFSUZKWFZqclBHdHJK?= =?utf-8?B?dG0rdk9SYTRTZzNKQmw2ZlZraE1aRjRrSmtDN2xIOS8zaFVTcXZ5NXFaSlFt?= =?utf-8?B?VkRDR0FhaDRiRitMTXYyeGQ2d1FCQ2FYSHNVNk00YzZZbzBTeDIxMjUvU3dP?= =?utf-8?B?UStHenkvalFyMmRDcFY2a0dCcmZIeXpPVVhPK1F2Qmd3WGZpMHg1SUdFbERQ?= =?utf-8?B?aDV6YkYyTWE5dDgrZDdSNHhPMmNxTnNPU3JuNUlwNVhweHpRcml4UmtZc0xt?= =?utf-8?B?UWE0Q2hEcnE1bSsycFd3TlluMWpVOXoxSm8zbWVyS00yWEN0OUcxM00vN21y?= =?utf-8?B?emVrcnhoN3FMTkJtdm1ieVRXNi9WUDR1UUh0ZGdiZVNpWDRqUE5kcGVXS0g5?= =?utf-8?B?Tm5XZXFoSVQ0V0F1cXNFQWszOGxvcjhhcXE0SERSTDYzMk9BYWpwVUdyNjVv?= =?utf-8?B?MFVyNng5b0JtQWZHU0xqZVpURGNYeTIxellnaWtzMDdBMFZYczhhVUlKSmxv?= =?utf-8?B?VzFMVVZ4MS91a0dsK09oRTlUeFRNUFhpU3pOZC9NZWJ5STRNN21GWnE0RDhK?= =?utf-8?Q?pAj5VDJTDlZr6+qhDRhOp8GDiK6oHs+7l4yDw?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 448e6134-dc60-49c0-ae95-08df189a9243 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 11:13:46.8859 (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: 3GGARSg1s9tPSTG0pdRKK9m6IdMPjDXmzDldmuHah08W96Hvg1OppP1jkcYUmecl5hixatZOwlxd28VWH7UFagAnXf+KtsXklFg1qjDwv8HHURYcCaPOrbP9D8K4jcCG X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11191 From: Peng Fan Convert the open-coded map->lock()/map->unlock() users in the debugfs cache_only and cache_bypass write handlers to the regmap scoped guard. regmap_cache_bypass_write_file() uses guard(regmap)() since the locked region runs to the return. regmap_cache_only_write_file() uses scoped_guard(regmap, ...) because the subsequent regcache_sync() must run with the lock released - it takes the regmap lock itself - so it stays outside the guarded scope exactly as before. No functional change. Assisted-by: Claude:claude-opus-4.8 Signed-off-by: Peng Fan --- drivers/base/regmap/regmap-debugfs.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/reg= map-debugfs.c index 18f1c60749fe..ec207548a6bb 100644 --- a/drivers/base/regmap/regmap-debugfs.c +++ b/drivers/base/regmap/regmap-debugfs.c @@ -471,18 +471,16 @@ static ssize_t regmap_cache_only_write_file(struct fi= le *file, if (err) return count; =20 - map->lock(map->lock_arg); - - if (new_val && !map->cache_only) { - dev_warn(map->dev, "debugfs cache_only=3DY forced\n"); - add_taint(TAINT_USER, LOCKDEP_STILL_OK); - } else if (!new_val && map->cache_only) { - dev_warn(map->dev, "debugfs cache_only=3DN forced: syncing cache\n"); - require_sync =3D true; + scoped_guard(regmap, map) { + if (new_val && !map->cache_only) { + dev_warn(map->dev, "debugfs cache_only=3DY forced\n"); + add_taint(TAINT_USER, LOCKDEP_STILL_OK); + } else if (!new_val && map->cache_only) { + dev_warn(map->dev, "debugfs cache_only=3DN forced: syncing cache\n"); + require_sync =3D true; + } + map->cache_only =3D new_val; } - map->cache_only =3D new_val; - - map->unlock(map->lock_arg); =20 if (require_sync) { err =3D regcache_sync(map); @@ -513,7 +511,7 @@ static ssize_t regmap_cache_bypass_write_file(struct fi= le *file, if (err) return count; =20 - map->lock(map->lock_arg); + guard(regmap)(map); =20 if (new_val && !map->cache_bypass) { dev_warn(map->dev, "debugfs cache_bypass=3DY forced\n"); @@ -523,8 +521,6 @@ static ssize_t regmap_cache_bypass_write_file(struct fi= le *file, } map->cache_bypass =3D new_val; =20 - map->unlock(map->lock_arg); - return count; } =20 --=20 2.51.0