From nobody Sun Feb 8 22:58:13 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 B54F72749DF for ; Mon, 5 Jan 2026 14:16:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767622574; cv=none; b=tvRajcP3nWgZ7naxbS2M8/n0lMBUilVKBKoYVdZyZfSVMu170p1MGUkvkbX11qGBpUUelFWdW0XR1h0bMwsmLW5RYJU7n4PyA7mSRPJ8V/YFtwObBM1fHqH0rml8KNvD0VvETHU518bGXBydcWVdSTM/rtXWRqZvXJbfkbd8i24= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767622574; c=relaxed/simple; bh=BrQ/21QZGDQuN7dhDoEHw0H247zcTWTkSd6dSJl8JUE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k4tO3ktMU0btpx5jwllb2Vh4mH5y9LTrjYmZQH1x8A511mPYyPFQHtrmkv4y+POGSDg08qTY4ljPYKZBPr7DUs8flzMiNQiHwbzsu/GmwB1V2BU6ybI1q3APKhi5uHRDSabNeW7n/DTZyR95DuL6gywXBw+aIPMlOyz4lDh422A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=epw1MGiJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HdGP6Uzk; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="epw1MGiJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HdGP6Uzk" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6058KrAt3655686 for ; Mon, 5 Jan 2026 14:16:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 4UGXyFsEyFi5eKZbXvn6VtZJa+dbc0di1+5ox9ledZM=; b=epw1MGiJuBGgpBTs iFuO86EAR184/9H6YY2N790yhzXDc+XkPvJ5XIRGnwiAjmaCLE8LlM0WWuVDKMGz L7ugaKOfsJ+taVkEgaP6HcXZiV1G0rkSfxnTVv9LNehuqFLKZ42atRJqpwxIZ7Ff NT64/rYYZw5bSBxMDoJSOocT+B2C+NHTgDgkYjvBADGL3m6QGpV08Yst3nBCtojw 1Tidnjn78XtPwkResugWPDQn+DWALGvvq9yKAT+ifH54E2X8k0cdczEJGkvKZyHO PtVJ3j591rzhWMY/RnAl6wf9BoAHbACP46m9QLBLesUPndXXlfmoyvSHBFBHGNyE ZJJUEg== Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com [209.85.217.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bet2qvwhj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 14:16:11 +0000 (GMT) Received: by mail-vs1-f71.google.com with SMTP id ada2fe7eead31-5dfc0924912so13626404137.0 for ; Mon, 05 Jan 2026 06:16:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767622570; x=1768227370; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4UGXyFsEyFi5eKZbXvn6VtZJa+dbc0di1+5ox9ledZM=; b=HdGP6Uzkc9ToP8ftqTSRu9eP6ebBVdV866V/PeMObl6wpTUJtenHGsJy3LfSg4gTCV xv5eRwt6UDz4nP2+0lZZrrHln700uobr9CQU/W1TKb1d442kFrYVhHnc8Kkmp3BglLKa tvakT57syApjylxHG9VW9DYDFwXpicnjXVwUbVLoBbzK6Z/rcT9NFwbHrKY7FYQpGg1v RE2e4fTSilklgIcbGEwMzEciMupy7q8WZvn9TSXXrmOa8coDGLJSPzZyCb7O2O08Ux3X bFnymaKVpKFJphQ1TQDAUgL/XLo1RoTc9LvtpIApugbxFJC+sfGDWqB8dqlNd7YQ9enS BzbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767622570; x=1768227370; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4UGXyFsEyFi5eKZbXvn6VtZJa+dbc0di1+5ox9ledZM=; b=qzrDmtHEAmkgllqejyzVlhk0iq3rFoS+MOM2CKN8P3y85p4mJ4UJ9fKQGNe/NCz5DN rvIaLlXqv0stDp9TGbEcYCptKIX6aOf6YqGEiZPNiHKVOTlzvqH7viEfy+uq8Ttz4oF0 wALGL0X/uR4i/i1rHyA3yFi3xOVQWU0q9+b5kmUTVXTKHwaSh9Q+rgjSvHUEXuzkmM1N hKwm0jvQEKWo5zbw0Wvx05OZf2ScAsh/+SPs/1ZaZ1uBUJQpDJE60Pvj2dD3L69DluV3 J2kzXjeaqgUBaVL8s/dQqaIrjBhoCw27DuA96ArDOejPgva4X0BdTz+YsjHeEtXBNDCG u8KQ== X-Gm-Message-State: AOJu0YyjVZsyOK2qV64A46yU7XZ9Ruv0PNOP2KhZg2PABgDT9s87A+TA sCaVFPTlHcP58uItjX6/IVvpuZB6w0G93n4Lbf2kZ4NBbzNz7QDPfWNWEuP/oYagMDyRDUTkTEl WkRcW97VqshMhv/HWJQS7KYQthsjbjy9cmERX5M2gl0wxr5uB/b71yuto+oec7PCJuaisgv/bm9 I= X-Gm-Gg: AY/fxX5AAh6ReffQfSi4+SsXhylYetBmtJUz49ZUZGQyFo2MfPESAK0eYAoqXCP7B9m LDFngAwMcCxKP1olaIhuYVvw6leC8ZuHcyrfmdDE435DUiC+X/eo0ThZU/lx7GWNoXa2RDLko7w z3kbSg7MrOHxlM0Z+IV3vI64S6plzau1BYiCVqNsT+k3SesIV1Jz+rgrj/1Rv7qPpLrVKDxRPFY NVbrK6UPmhyuas8vR8ppkUI2DXwvhVwF8bWg7fzfOZkidFKJTaE53It+aHcEBKTn4Up5NVeVSkZ HWz+TbMTJlIgRSRtXP6+Mhw8XPZm5wftIGlkY2aNCq9o4JdmbMzpdDoX9T8khmEYk6Pa6vfdOVy TGtsxYmioIxLgiSOoI1d/Ij68iVPUSvCUhd2/uIc= X-Received: by 2002:a05:6102:5114:b0:5dd:f9c2:5533 with SMTP id ada2fe7eead31-5eb1a802900mr13801607137.30.1767622570464; Mon, 05 Jan 2026 06:16:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IFj2GidG4tnd/CrpHMgO7Xj88RKiWfDiJp6iLQtrxS9O6eUsszAxyZ/YQfrTbrnp+lUPtqOIQ== X-Received: by 2002:a05:6102:5114:b0:5dd:f9c2:5533 with SMTP id ada2fe7eead31-5eb1a802900mr13801584137.30.1767622569874; Mon, 05 Jan 2026 06:16:09 -0800 (PST) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:dd3b:c635:dd06:9574]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aef7sm100774703f8f.7.2026.01.05.06.16.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 06:16:09 -0800 (PST) From: Bartosz Golaszewski Date: Mon, 05 Jan 2026 15:15:26 +0100 Subject: [PATCH 07/15] reset: use lock guards in reset core Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-reset-core-refactor-v1-7-ac443103498d@oss.qualcomm.com> References: <20260105-reset-core-refactor-v1-0-ac443103498d@oss.qualcomm.com> In-Reply-To: <20260105-reset-core-refactor-v1-0-ac443103498d@oss.qualcomm.com> To: Krzysztof Kozlowski , Philipp Zabel Cc: linux-kernel@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4637; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=BrQ/21QZGDQuN7dhDoEHw0H247zcTWTkSd6dSJl8JUE=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBpW8eacplxrQpLSpZpUMa7p6xFNfRb3Hr1plRdA YcJzTVFPSiJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaVvHmgAKCRAFnS7L/zaE w/S6EAC0FpwHUJG3pVdDjD1z5CNzgD8d2F9LzcHEfhQjkncENUbgeehYn4LbAy1Qt45uTBcTzba rP3ZewHoU9vxYnbh1tX8yVGeMD5HQVYZWSsu21MadmFU//z749csXMvYySVpDRS50fxJA/zUvyc okSWrfM4Od0EjWHIN7f9r7iBvHwjorQm2m0CpWMbI/1Ta7GsicJ67pn6QFKqSxM+w8H8DBsEYov GmI5hMJKH4irPAJK0Ejf0NoOHJrvvQCZVRXy0boUNraUt9ZUkIOuq33XeKjgjr7lsWA+LY9ap1k w6q7STBshlWL1gmYv2No139YjGvmeLvHn/Xcpih9v7LmGh01vHaaFEibvnF+fWc+okK6XPfzdgy RRRw/oJmB1r3Aux9V3T8BtctBXbma6eXlIWFOYldq9BGp/p6tNaALBU4iI28m1Rp1Oa4UrYJydO wr06kRSEudBUzWNTiF7s9muvpZ/P57c47LbkSS1kYSXig85I77K36+/Y4W1Bi0bj/X3ypOkWgTu xUq7qfM+XuwpJotg+O7VA6zXmEPxhLs72yY6Te3d6wzgmqjpELWCQAGX6wTPqCcDjVJ4xT8CgBW +pL8Z1Swaf51ts1ch0ljhMj81PvgdPmgFs3WBq6r5MXFkhGb97Al7nA/NaQpDxwbZlWf+AcN0rL xoOpJG/7EzyDlJg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: CbNZyBZQL_tkH_2Tw-id7uzNx_ClCYaz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDEyNSBTYWx0ZWRfX9yRhcUsqd9sp zrV4abZUBWhX5K9Pcfg12nDaTfGqR7TaRuZPnLbscDwvhNq3fDxveRVjVwHrpMv6B72uN1e9cME Asiy5D5knDvONuyfvRbfZnV9VOBqYFAUfYM1z73/bPoQYSwZEMDY7/5RG5pkYhalZdB3EwAXvyX YxRoYY4b8URf3qT8KXeaehK9lMBgLzWIOvbRBfUA3rbGwoNww8pEyoGx/Z6UoT76fd5jxtEesOt E8tZcpqq6TZVXHZk4GjK5yTWQBUGcPgKV4cf2MjqI53hlZnEyByn2ZzIzWaCWpwmsvD9XRf6JVm W5ln2SGl3lgyr4c7vpReuIp3tDs74XjXu4f0x6ZQV4Jngbul4nCorqE5mNIzZRd/Do5vfPehwGA rr0Oou8/dIPNo0aBGTh65X/YMBSmZRPrGCz0sAdrfhVJ4CGjYv5Km3Dx5tEIS3pagkZu7nZHGQc ML49hyH4QkcdCw/94Ew== X-Authority-Analysis: v=2.4 cv=RKK+3oi+ c=1 sm=1 tr=0 ts=695bc7ab cx=c_pps a=P2rfLEam3zuxRRdjJWA2cw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=ABYPN_TNRu3JwaOvJ3UA:9 a=QEXdDO2ut3YA:10 a=ODZdjJIeia2B_SHc_B0f:22 X-Proofpoint-ORIG-GUID: CbNZyBZQL_tkH_2Tw-id7uzNx_ClCYaz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-05_01,2026-01-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050125 Simplify the locking code in reset core by using lock guard from linux/cleanup.h. Signed-off-by: Bartosz Golaszewski --- drivers/reset/core.c | 51 +++++++++++++++++++++++-------------------------= --- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/drivers/reset/core.c b/drivers/reset/core.c index 39bedf990223212998fa8ed4cda517529f94ee23..ffb811cbc6460b48dd833d3560d= 6538eea2fd5c0 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -130,9 +130,9 @@ int reset_controller_register(struct reset_controller_d= ev *rcdev) =20 INIT_LIST_HEAD(&rcdev->reset_control_head); =20 - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + list_add(&rcdev->list, &reset_controller_list); - mutex_unlock(&reset_list_mutex); =20 return 0; } @@ -144,9 +144,9 @@ EXPORT_SYMBOL_GPL(reset_controller_register); */ void reset_controller_unregister(struct reset_controller_dev *rcdev) { - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + list_del(&rcdev->list); - mutex_unlock(&reset_list_mutex); } EXPORT_SYMBOL_GPL(reset_controller_unregister); =20 @@ -647,25 +647,20 @@ int reset_control_acquire(struct reset_control *rstc) if (reset_control_is_array(rstc)) return reset_control_array_acquire(rstc_to_array(rstc)); =20 - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); =20 - if (rstc->acquired) { - mutex_unlock(&reset_list_mutex); + if (rstc->acquired) return 0; - } =20 list_for_each_entry(rc, &rstc->rcdev->reset_control_head, list) { if (rstc !=3D rc && rstc->id =3D=3D rc->id) { - if (rc->acquired) { - mutex_unlock(&reset_list_mutex); + if (rc->acquired) return -EBUSY; - } } } =20 rstc->acquired =3D true; =20 - mutex_unlock(&reset_list_mutex); return 0; } EXPORT_SYMBOL_GPL(reset_control_acquire); @@ -1069,22 +1064,23 @@ __of_reset_control_get(struct device_node *node, co= nst char *id, int index, } } =20 - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + rcdev =3D __reset_find_rcdev(&args, gpio_fallback); if (!rcdev) { rstc =3D ERR_PTR(-EPROBE_DEFER); - goto out_unlock; + goto out_put; } =20 if (WARN_ON(args.args_count !=3D rcdev->of_reset_n_cells)) { rstc =3D ERR_PTR(-EINVAL); - goto out_unlock; + goto out_put; } =20 rstc_id =3D rcdev->of_xlate(rcdev, &args); if (rstc_id < 0) { rstc =3D ERR_PTR(rstc_id); - goto out_unlock; + goto out_put; } =20 flags &=3D ~RESET_CONTROL_FLAGS_BIT_OPTIONAL; @@ -1092,8 +1088,6 @@ __of_reset_control_get(struct device_node *node, cons= t char *id, int index, /* reset_list_mutex also protects the rcdev's reset_control list */ rstc =3D __reset_control_get_internal(rcdev, rstc_id, flags); =20 -out_unlock: - mutex_unlock(&reset_list_mutex); out_put: of_node_put(args.np); =20 @@ -1135,10 +1129,11 @@ int __reset_control_bulk_get(struct device *dev, in= t num_rstcs, return 0; =20 err: - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + while (i--) __reset_control_put_internal(rstcs[i].rstc); - mutex_unlock(&reset_list_mutex); + return ret; } EXPORT_SYMBOL_GPL(__reset_control_bulk_get); @@ -1147,10 +1142,10 @@ static void reset_control_array_put(struct reset_co= ntrol_array *resets) { int i; =20 - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + for (i =3D 0; i < resets->num_rstcs; i++) __reset_control_put_internal(resets->rstc[i]); - mutex_unlock(&reset_list_mutex); kfree(resets); } =20 @@ -1168,9 +1163,9 @@ void reset_control_put(struct reset_control *rstc) return; } =20 - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + __reset_control_put_internal(rstc); - mutex_unlock(&reset_list_mutex); } EXPORT_SYMBOL_GPL(reset_control_put); =20 @@ -1181,10 +1176,10 @@ EXPORT_SYMBOL_GPL(reset_control_put); */ void reset_control_bulk_put(int num_rstcs, struct reset_control_bulk_data = *rstcs) { - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + while (num_rstcs--) __reset_control_put_internal(rstcs[num_rstcs].rstc); - mutex_unlock(&reset_list_mutex); } EXPORT_SYMBOL_GPL(reset_control_bulk_put); =20 @@ -1403,10 +1398,10 @@ of_reset_control_array_get(struct device_node *np, = enum reset_control_flags flag return &resets->base; =20 err_rst: - mutex_lock(&reset_list_mutex); + guard(mutex)(&reset_list_mutex); + while (--i >=3D 0) __reset_control_put_internal(resets->rstc[i]); - mutex_unlock(&reset_list_mutex); =20 kfree(resets); =20 --=20 2.47.3