From nobody Sat Sep 26 07:55:27 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 40FA749EC60 for ; Thu, 3 Sep 2026 12:08:01 +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=1788437283; cv=none; b=ryabWOHDXz0fL6tBlpcv4zBNbWbG4ZD529SHOndNKp9fPm+lwPR9DU1AJGrAt5TwJi0Tm6/MKf2qr809B+AhBEWBHjviaAErcchocHl9eJKdCR6TMSD3vAOXKJm7xZEKh339Bekq/jh9i01r04YCiW9AESsNu8P86Y+uB37qBho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437283; c=relaxed/simple; bh=JvjgTsJZJ52y4kyW1nFUJTEfAu0hNknPq7wSNqID1I4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MxbEnZviomY8WOLqTlef+aNtynkoUTF8Rq4i+8kufNIcYY1Sx33Cki2HIzrJNTuMwpIRwV4HaThsGK7nAdA0sMg1SzIf6okPFvxlW20pGUCHKwpuNIn5grOLdEXpI0bXzsIut8//CwY3vQX+YPPQVgVVdvU0wfprJ0kcdQhaovc= 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=bw21I/T9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hbAJa2il; 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="bw21I/T9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hbAJa2il" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 683AH8nv3203916 for ; Thu, 3 Sep 2026 12:07:58 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= dDZqAY+ezXfJh7xukUn90z48pHmek8RAP97eAMAhVww=; b=bw21I/T9Rm7I7Z6x 1j5DgDvyHuveaea1+wsbKgS65DZiPloXZp8gX1r/AmL6LRPpKF1QkorIs+QeNpJH cWKFAgt3fKSTt4sgBpassSrrKritpenEqUuYZkeC2xzjZLkJwG55cZXneG/Mb0Us +mLz9kMctYjQ5nd42SLYVTykIGOHCIAM1NGjzsSmW1zzLjx5f0rxQ5zlHvrdp08o 9Hmxdc9IMxg2n3/KYTohFPG2XukMCYbHa9lG/gkndZcQDX5Hj0WHuF/UFGqSK5Tl +QidJ6uDpVzDmjwO9L7t+NLqOhmzKeE/JMNV50JkFT1YJ8NDGh5XT1QQn2BSIvWs jia1Rw== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf5d10tjx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 12:07:58 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92ec3146553so637033385a.1 for ; Thu, 03 Sep 2026 05:07:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788437277; x=1789042077; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dDZqAY+ezXfJh7xukUn90z48pHmek8RAP97eAMAhVww=; b=hbAJa2ilA+xZ4FwTHI8MM0+SHS0D8A5yYqt0oK76beNfFFf2xxM6wn/QgsMVv3NC0W LvVQ6gKlVicwJmRvUbg8MkwvgP4GRvt5N6n4M8H4FIEIW+1KEUL3/cWsXz/BlF6I4iu5 SN1BCj1WJyZ1unTQkn3HUjwb0Ka3vGddrXRBMFd5IHcbV1QUcfeHwmxjaHpczDrZFvNj GXaY8VoM5+8xYjjraBEjM+osll8BJWxI2fuP4/w/9dqHiNofia+0wQe5iWxzyO00mHSq ycizUrCTYmm0Ku+5NnIDMkHP3HK6jO68OesKenSb2MoW76/GBb8r5lPIdkUsXE1cHz3t KI+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788437277; x=1789042077; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=dDZqAY+ezXfJh7xukUn90z48pHmek8RAP97eAMAhVww=; b=nfJqNEQS6BbRgHntfoKib+4gLTbiT160sDw5A8fFachqo+nWDwFKsJIMeWJ4f3PctN SPeUH9qIr4KvJ/38dXpHcDcD93PpAZVubqGc3r4uIp0aDA664B93xHT0gAHCmQjEab8f IqFbI49mZOjH/bDVwGBoQsxi+MHpf0mHHSW2Eq8GjcoGvT6uZGdHTPQ5h/wrY5iU5Fo5 uHwV0ykf9wwnBrna73t78SERGrJO/5Op4L9mKNG4C3j2puMk9qVgIrrlLM46KuOYs2fm CdR1y1kv9GYMAXQN4kP5YlP317v+HvMDz9gAMPBkHSYLp7eQBgkflabOt82sVkO3IkyG GRVQ== X-Forwarded-Encrypted: i=1; AKwUvByGlbWd8uEOwXzxPWZ6fgov4ZkPHBawBwKcqomLkK8hfcw934oY2BSszHxZklRKkhduRIw1PXwM39XYZXE=@vger.kernel.org X-Gm-Message-State: AFuF++lkgG0X29204uc9/B3ftct7dH434KXL7zyCGvku46p8FVeXQvk2 OLboG2bVyEngteXxBMBHxUKjWI4KoDTRBRKn2jVv6na8ZWO2k+3/J9buwWaS7PIdqxcrsPaXq2z I4gPNwjKbq2Gfo2ysj6OPrh+Ye8mJ8EKP5OxiSd31T/hIsqy3bUH5MZ+cU27oZfbnouFMORKelL A= X-Gm-Gg: AYBFou0HHpNrczmvWnwK34eZt4rZvYJdS8nxovXktsGUvaz53dJBRHTBFPvzB0rOm9S DJ72Kbr96GO45myAIdh7X5qZ1zngpiNQ4BC3X1OlgRMWhb0nbxmaCfeva2wkwCAgu+i+TVSNz00 mcteFUy00KvUnXMmx0qE06z+0kJZD6LpLznj3VwX4h8e7XldbpPLTL1bAI5IpJ1uKbyVxwOKfWW uNvxnrFVtLhWChK2AnbCUVP4Rg4OyXBHE/xMEmpAFkeaZD73Z1k4VPY6E9twMqgC6lFBHmVn6X8 Km59hJIB5hKIrXMxBs+MNukmBNiMX9Ow3tPiOSjCHHts+m+l/V/LhFr+GXnGdvYZNpUNLultvka SKWYa5tHB1yyz/gEJz6/GnahP9tP+ X-Received: by 2002:a05:620a:6187:b0:939:6df3:d7f6 with SMTP id af79cd13be357-9396df3de25mr697151185a.49.1788437277325; Thu, 03 Sep 2026 05:07:57 -0700 (PDT) X-Received: by 2002:a05:620a:6187:b0:939:6df3:d7f6 with SMTP id af79cd13be357-9396df3de25mr697140885a.49.1788437276736; Thu, 03 Sep 2026 05:07:56 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:1c7d:412b:f9d3:3bfc]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cee5d587csm72143115e9.4.2026.09.03.05.07.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 05:07:55 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 03 Sep 2026 14:07:42 +0200 Subject: [PATCH v3 1/4] firmware: qcom: tzmem: guard against IS_ERR() in the cleanup handler 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: <20260903-qcom-scm-code-shrink-v3-1-8237f3a654e1@oss.qualcomm.com> References: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> In-Reply-To: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> To: Bartosz Golaszewski , Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1151; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=JvjgTsJZJ52y4kyW1nFUJTEfAu0hNknPq7wSNqID1I4=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqmWMUrMFILDlEffZuTArHusuP3GlPVcDQI2UzL bpeQlMEv5uJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCapljFAAKCRAFnS7L/zaE w+KED/49DJpAzsHZorDqRzPFVsR9qZ7WTtBdJ6o9gn2g6/0sCUk0dGRtonXJOXlfnH1dEVrfufm fjdvH/7gHxiTVxtAxoxYp4RWQbVOSyOqlP1Siqz/lJIyhrLdQJxmm7uK5vq4gugNvN2BThTy4BX NcZXq/STTpvrr/7Dj2Bdlc3YuDtwyWp28XZmCzSGtsRdXEgC/d83FGfxbWk+RS6Mf3/bLlDbrbL VQZgmZ8Biju9MBKRXZFfKvYE3NHh2hAMQUoT1IATVJLaszl00EowfEHu34K5CdmkTJZUiw7SQhb lZVvG7LEzmANBlJUxtBTtgSo6fJ2DEPatPQE09WrbRycvau2btzfffIQKbvpBqNoY+/x1kdQ0xs NdXAvfJfSuoDwhLMQ1YReTOyrpVnwKngl1W16zPmxqje5d5WUyRykzxrsVKS5oJGdmac33zFoX8 HyZ3APTDuM7qlC945gCaL2GJ3cRzgR2Bz0XaBJQrWgBca4VmQrn8TKRqgD7sEiJEf5Xcf0MyCdg ThnONUZzx3RFy9fAqvAB+vbTKd+VTer7cfZyfsoEvLu6rrdybuZsOtUQq/4Kn2Pe8dYxE7T0ew7 LjmNzhuKA1QX8mdVwZsMzYC+AVgeoqhFkMj+dmn1NjXXfFQEwQUYjZJKk2FVLtPEtMOvTXGWAPG jpEvaIxQapLlWIQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfX2mAndu1SgzUW UsYh3oipzo1nYeT41DS0fzVrtuVuAi+LEoXGQgpph2GIUVYSbs+T1o5WXilp/C3gmtgPydndpQU jdvwA6iNFeSTNPwPSAWK5Kh2FR7kBqer7M8j39skYZaDpL93SS3sIYKuiItPih74RxBFvLEJ//g tEJqmg6qBCHb+wPR5Nap7T//YRIleA2OmWkmcWqDmaBR7IV233uz2Ebce6/pQaROK7sUHM4uAvu bC95y8lh8C2hwq/aGiFNFIRbRClsZdiIZ9fr/x822KSO/QD/TcWol8mXjbWaDQDq3q9xsaJ24xr Kc5Sp7rSUwowlsojVXb4S/TrtGLzkXd9Q3OSYRfLVelwYPgdq2K1Cgz7kiec2VpygW2pVHt3iSV E9ztBLbufsa+XDhXbD6wxUsah0o7bPQUld5LgwYx5BZA+aJCRxdSAagVflCE2ZXQ8bGX/Aoc7y1 GB0IhJ04j7CxXBcEkxA== X-Proofpoint-ORIG-GUID: 1as5Bzv52CQfJBi1C_xqLZjwhP-vasZ2 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfXwTWOxZ73QQCT 6NPGT66N2e13zAYqoaY/sZWOnmdOQzAl6tc7n1++lOtQvx3j13d+mdQGTr3ToA3/rHmmAnesZYf P+KyCGYyOsKQgPzL/LpUkP6Yz5UjOSQ= X-Proofpoint-GUID: 1as5Bzv52CQfJBi1C_xqLZjwhP-vasZ2 X-Authority-Analysis: v=2.4 cv=J4GaKgnS c=1 sm=1 tr=0 ts=6a99631e cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=PGwebHSm6yYtckILb5AA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_03,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030105 We currently only silently skip NULL-pointers in the cleanup handler for tzmem. It's possible that we get passed a pointer holding an ERR_PTR() value so skip it too. Reviewed-by: Konrad Dybcio Reviewed-by: Mukesh Ojha Signed-off-by: Bartosz Golaszewski --- include/linux/firmware/qcom/qcom_tzmem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/firmware/qcom/qcom_tzmem.h b/include/linux/firmw= are/qcom/qcom_tzmem.h index 23173e0c3dddd154dd56dc3dcb56bd20ada0520a..b5520178bf6f53b86b530571a3b= e9f302225f022 100644 --- a/include/linux/firmware/qcom/qcom_tzmem.h +++ b/include/linux/firmware/qcom/qcom_tzmem.h @@ -58,7 +58,7 @@ devm_qcom_tzmem_pool_new(struct device *dev, void *qcom_tzmem_alloc(struct qcom_tzmem_pool *pool, size_t size, gfp_t gf= p); void qcom_tzmem_free(void *ptr); =20 -DEFINE_FREE(qcom_tzmem, void *, if (_T) qcom_tzmem_free(_T)) +DEFINE_FREE(qcom_tzmem, void *, if (!IS_ERR_OR_NULL(_T)) qcom_tzmem_free(_= T)) =20 phys_addr_t qcom_tzmem_to_phys(void *ptr); =20 --=20 2.47.3 From nobody Sat Sep 26 07:55:27 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 B6BB44A013E for ; Thu, 3 Sep 2026 12:08:01 +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=1788437284; cv=none; b=aSzzHf0IVQaOw8BIDJDIEF+LJj7IRLBRTOOq65kiFZsvHAgYe5E7AEXPe/1JSnKs4VaatxQYNtyMf/6iuL+kJizv/OIcjWxopJ/e2tNOfClow675HvHRX3Ssk38CHnLYDwcxH5IKCDBqW3Xp8FzXkYjX/O4sFQ08Qav0ZgsmZU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437284; c=relaxed/simple; bh=n0zu95eDBU1kAfntcbqfFNxZZx2VdpTq6ednZfZd218=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PU0SzKApL9VFWrpmqf0RU0i5UuK9xiZWycdVsUQ6l1oJtCo1voAN6TV1mbVuWvGAq9n+8SjMKWd6o5w/qrcp049lnU15R6mHoNYQbkS/7piIFhqqSkzVHxstSPK/Ax7tKJW95gXVZP+/aoW1fET0BVrnfrQPMlxoKpSCJ08pxyk= 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=pto5HDYV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CBvUDuKD; 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="pto5HDYV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CBvUDuKD" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 683AH2ae3720090 for ; Thu, 3 Sep 2026 12:08:00 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= MrdKRy7N1E3YVxM1Z6RPSh55Dn7M6rY6ku+pqhnBfco=; b=pto5HDYVdPmzP5UI 4fGUlbMC6Ah/iBcFiUYabKfn4DSmh0wOTXCkHVWrcSJkz/lroq3KGYSiwV//PxyD SMQPIdhnBFLcjogk7RleUfYfmnU9bfu0ps5jwCCzqAhqibgXH5VVxZ6IW1X+Yal3 dypHwLXp0xkAC8sceEqXM/PXuARwrN6ce4D8fIvn5OaVeny4iyLGRiPj6r63nJjG NLJbkAyqmargGvCs9wdSCigQJWR151GiDRpyVZspZUn7tb5jVS5whhhhPOwPCb39 gF1lQM5oKBOikBIy7UlrYbdOvYszGivQJZpO7I5fofJDe8KwCLXQE/hcGaZL2GuQ 8e3Qdg== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf0gjt0h8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 12:08:00 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-93909014c85so418667685a.0 for ; Thu, 03 Sep 2026 05:08:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788437279; x=1789042079; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=MrdKRy7N1E3YVxM1Z6RPSh55Dn7M6rY6ku+pqhnBfco=; b=CBvUDuKDO/v4kde60ODubmFyo79HrozqVqviixUSkaW6ycCe75O6zout8lt2AjuxOb oGqW1RvZx8QE7DmOzSfSFlylasymYxaXpNMbMT5VXXNSw8zEqFoFqhdHecSfsvGuD7JA J4zM439pvu6sTT8jCxiliiunhsVM3Sx3rj/htMONqwaNTOkBel2E272KuABU5f+Zk8wN KJRcZYgwb9bCsp6DeZq7xw5ooSfxQI0wecdLavTu6gDZdrM8Za8VSUdx4lgEEBRxqFBI fdgne1GaWFuhvdk1VjUb3/03cCqRFGn0kypMz9b9Ag5Hr5HiChG6imjbsOhGsvL+ruTg Pvtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788437279; x=1789042079; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=MrdKRy7N1E3YVxM1Z6RPSh55Dn7M6rY6ku+pqhnBfco=; b=UU4Xu3yjpyXT30W+ajjNxNeCvzBszKic3SOEyakN1LXaMq9Vf3jfYYR7UhW8jKPiS9 dcfl6HE7DBfATZEJmvFYg6a6kc1pKwYF0/c8wuxFOXEebw/Bq5aIjjjPMIoWTQVJThzS HbX7+TRGXinfll+eM5YdUsk4GItQJd4YCblaDoX1c3G14ZV4CsGeve9UwseatUw00R3Z mfmqroMJnroHzaibxNDma0hQx4w7bWNoKO0rJdue64DIPi7TWGIoZYiI82qZwZnDn4px 8UCV+UUHPR6gwO5vQbGERuBF0P6NzFTG1Qk7JBIBQWY3cnTL3kygR+wNkq6uy6soFKxo rBjQ== X-Forwarded-Encrypted: i=1; AKwUvBz+ztaNPobvbZC6WJDwn96KPrGc/dbcwO4S4VimKc3XmnEaqJSfEmGKva7LcSGBb4vN43JNOjfK9NmFGk0=@vger.kernel.org X-Gm-Message-State: AFuF++nfprcwdq+Hc8+ZW9lbWD6DLujOzVBcpUfFPISpjkROsxxMm0EM seXayGjP4hREDxKYsdjzckr0ozTl5bXZGAJxerxPdChK47UpkLeGP/+tYEv3/Cu/RiyMzcTrodL NhuigwqXDh2RTl23vZSEJ1Joh6yh5k9FSgcrzdvx3Jc4TDprLV1eURRKEQQq4fqmlQN8= X-Gm-Gg: AYBFou2WLXoFQvt+dApeDpRFUYSAfQCj4/yZbrPaUt3YLgdfakVmYfTsy9yAyLFSoSp zPubplwwkR+bxo+Y18ivRVquZa3/R37rJ7pErbyZFmq7k8MF9xFoDklfCyy1HNkK/LHJeXAekDX grV22Ej88Dkr2z5nhRqGYYCOvVmkog/9Ga5hyJYhNIMdloBM4MjbadRMF4B5EECYk0pedfUckhP hsi2tbmVCmSBmRo63dEKxJ2S0mRBq2Fj1uv/T2dzwKwjAsjd+tCXrcj2FHrTF8zqChUHPzTNVHY yrQSt9vxQP/pSoMqr28nrJMHd/zp7uxmlL2P7wIx9vJEKXknG+toRYOfXDvbZYSTRUJJcchMnS9 yyUdE840/DUZK2EXwIuMDhLa29Zq4 X-Received: by 2002:a05:620a:3192:b0:936:ea3d:9313 with SMTP id af79cd13be357-9396ef7c45bmr569319285a.20.1788437279006; Thu, 03 Sep 2026 05:07:59 -0700 (PDT) X-Received: by 2002:a05:620a:3192:b0:936:ea3d:9313 with SMTP id af79cd13be357-9396ef7c45bmr569312485a.20.1788437278536; Thu, 03 Sep 2026 05:07:58 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:1c7d:412b:f9d3:3bfc]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cee5d587csm72143115e9.4.2026.09.03.05.07.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 05:07:57 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 03 Sep 2026 14:07:43 +0200 Subject: [PATCH v3 2/4] firmware: qcom: scm: use __free(qcom_tzmem) to simplify cleanup 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: <20260903-qcom-scm-code-shrink-v3-2-8237f3a654e1@oss.qualcomm.com> References: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> In-Reply-To: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> To: Bartosz Golaszewski , Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4614; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=n0zu95eDBU1kAfntcbqfFNxZZx2VdpTq6ednZfZd218=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqmWMVTP/fpKpUip0gIFUXFjg+J7TosOhspxkLO cMqsAJTaJSJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCapljFQAKCRAFnS7L/zaE w6lVD/9GdMP1NbCyPQq6SqcVzwUC04Cj82i+NyPpztb940Yswpo5H1SpFqAP/z90Vbxd1H5EOAJ NDaQRsgsJXqwiA2t4FsIV4MevKCCjeuHug/sDuodfa2xO7ObsPdtxZZSPQgR4lo5Efp9BliaI2t RChfy4NvTwVwadyUdh39TlJ4zBsonfmN/66+CIP4x6RRxLw1fZpdgXhXkES4vsrWaxNa5DFY/9y t0QFNsklUkgnL28JDDtIM9XLqGyjrqZ3OpOYakeyjeHTqF4Pd3+QfzHoui9JtZzsklgRedZJ2is 0VFSdsHjRA2v9dyVh8iKleJKTfRc0hyF5IL6aHbx0L1pCT93a+OiYAuZxJfo5stiXZI3RlmwXhS Nt+UsYKxDP9fQT3zAN2cUpdHP6Ga9RpqglzqvpAvImMcQOJazpdfnPWiqfRXAWHowFV6DaRBhtM 5cbj/1JVoP0xCnbrpP8COQ95rx6TGT82c8cORPf643m/pSvMadeDjzEj+E2+UOu9J5wcQZ/PjxX Mka7pWxaSz1ar18JVUQKOhgxJ3IiIwd3Z+hcfe+oDVCjESBhMn98RROoL6kaMEuha71wcxhaGNH U+rCt6x5VBAVk2DIGhLtxABtkSS1d+CtzbCQHb5MnF5YQ45eDfH1mRwWc1N+UVgoqkvUkbDat7I 7tiVT4t3xcJdE7Q== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfXzhaU624S8+KE nMBsCTv9kZYA7tGwGbXItFIE6MICU2nQ3J+c5oE7bubyNgyJJgy+CUGvCpsg+fIZXCyz3UqkD7V DhMa/QjQI3S3nusIQdRSQo9c6l1sRC+VxJGam+I9I+nQXxFgdZvNPG+aGHM41jSrkCm23JLPRwA VOZ2Ge9DWc5zwJ2F46tsJiYa1BBnTkh2Zc+/+z+7cwKMB9RpcjnyMUDUVt/q7ms+aTm/a4XtxcJ imk55/6RKmPgqSkbmfyjN+LDYGS+HHGSdIVmCd47EYCqpx3vAwu5lnTTef/EPrTl/D+Q2G9VOM7 d0jNyld9y7zCWAol5PaNovM40DbvfHgikHX0RnC12ErXP4uxTf0U9EKW4KHRqsLRFROPd148VoX zi3bMmdp30j0dg8gg4escAjy0pB5Kv0fEEKam3Eko81nOwVERR5lXdsYhflUgROWbKWeCCCWs5O x2UpqAotoJVY1L3fjsg== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfX+b3Qb7gJozzB dXrpA3dob7zQIxChXYqtAtUm5U33+ZWVg3HZuw2mwnhbR1TqJBhgvX7TWGtAb6aMz1H4ME+8iFu y0zbhHZTZ91cUspLArpwMoMCk91rZj4= X-Proofpoint-GUID: Vm67P3hGevO0fYfpYQYcR-cV5GHEOdBn X-Proofpoint-ORIG-GUID: Vm67P3hGevO0fYfpYQYcR-cV5GHEOdBn X-Authority-Analysis: v=2.4 cv=LZ4MLDfi c=1 sm=1 tr=0 ts=6a996320 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=lzBMFA2zsglRjAhb4b0A:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_03,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030105 Use the __free(qcom_tzmem) cleanup attribute (together with no_free_ptr() whenever ownership is transferred) to replace open-coded qcom_tzmem_free() calls and their associated goto labels. Reviewed-by: Konrad Dybcio Reviewed-by: Mukesh Ojha Signed-off-by: Bartosz Golaszewski --- drivers/firmware/qcom/qcom_scm.c | 49 ++++++++++++++++--------------------= ---- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 80a51ae644e2dd47fc4c4a1a9cf2a507abc981ee..7320d3cfbb9930ca1ed5de38294= f871b472f6f93 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -614,10 +614,9 @@ static int qcom_scm_pas_prep_and_init_image(struct dev= ice *dev, { struct qcom_scm_res res; phys_addr_t mdata_phys; - void *mdata_buf; int ret; =20 - mdata_buf =3D qcom_tzmem_alloc(__scm->mempool, size, GFP_KERNEL); + void *mdata_buf __free(qcom_tzmem) =3D qcom_tzmem_alloc(__scm->mempool, s= ize, GFP_KERNEL); if (!mdata_buf) return -ENOMEM; =20 @@ -626,11 +625,10 @@ static int qcom_scm_pas_prep_and_init_image(struct de= vice *dev, =20 ret =3D __qcom_scm_pas_init_image(dev, ctx->pas_id, mdata_phys, &res); if (ret < 0) - qcom_tzmem_free(mdata_buf); - else - ctx->ptr =3D mdata_buf; + return ret; =20 - return ret ? : res.result[0]; + ctx->ptr =3D no_free_ptr(mdata_buf); + return res.result[0]; } =20 static int qcom_scm_pas_init_image(struct device *dev, u32 pas_id, @@ -732,10 +730,11 @@ static void *__qcom_scm_pas_get_rsc_table(struct devi= ce *dev, u32 pas_id, .owner =3D ARM_SMCCC_OWNER_SIP, }; struct qcom_scm_res res; - void *output_rt_tzm; int ret; =20 - output_rt_tzm =3D qcom_tzmem_alloc(__scm->mempool, *output_rt_size, GFP_K= ERNEL); + void *output_rt_tzm __free(qcom_tzmem) =3D qcom_tzmem_alloc(__scm->mempoo= l, + *output_rt_size, + GFP_KERNEL); if (!output_rt_tzm) return ERR_PTR(-ENOMEM); =20 @@ -755,20 +754,17 @@ static void *__qcom_scm_pas_get_rsc_table(struct devi= ce *dev, u32 pas_id, * be of unresonable size. */ ret =3D qcom_scm_call(dev, &desc, &res); - if (!ret && res.result[2] > SZ_1G) { - ret =3D -E2BIG; - goto free_output_rt; - } + if (!ret && res.result[2] > SZ_1G) + return ERR_PTR(-E2BIG); =20 *output_rt_size =3D res.result[2]; if (ret && res.result[1] =3D=3D RSCTABLE_BUFFER_NOT_SUFFICIENT) - ret =3D -EOVERFLOW; + return ERR_PTR(-EOVERFLOW); =20 -free_output_rt: if (ret) - qcom_tzmem_free(output_rt_tzm); + return ERR_PTR(ret); =20 - return ret ? ERR_PTR(ret) : output_rt_tzm; + return no_free_ptr(output_rt_tzm); } =20 static void *qcom_scm_pas_get_rsc_table(struct device *dev, @@ -778,8 +774,6 @@ static void *qcom_scm_pas_get_rsc_table(struct device *= dev, { struct resource_table empty_rsc =3D {}; size_t size =3D SZ_16K; - void *output_rt_tzm; - void *input_rt_tzm; void *tbl_ptr; int ret; =20 @@ -801,7 +795,9 @@ static void *qcom_scm_pas_get_rsc_table(struct device *= dev, input_rt_size =3D sizeof(empty_rsc); } =20 - input_rt_tzm =3D qcom_tzmem_alloc(__scm->mempool, input_rt_size, GFP_KERN= EL); + void *input_rt_tzm __free(qcom_tzmem) =3D qcom_tzmem_alloc(__scm->mempool, + input_rt_size, + GFP_KERNEL); if (!input_rt_tzm) { ret =3D -ENOMEM; goto disable_scm_bw; @@ -809,9 +805,9 @@ static void *qcom_scm_pas_get_rsc_table(struct device *= dev, =20 memcpy(input_rt_tzm, input_rt, input_rt_size); =20 - output_rt_tzm =3D __qcom_scm_pas_get_rsc_table(dev, ctx->pas_id, - input_rt_tzm, - input_rt_size, &size); + void *output_rt_tzm __free(qcom_tzmem) =3D + __qcom_scm_pas_get_rsc_table(dev, ctx->pas_id, input_rt_tzm, + input_rt_size, &size); if (PTR_ERR(output_rt_tzm) =3D=3D -EOVERFLOW) /* Try again with the size requested by the TZ */ output_rt_tzm =3D __qcom_scm_pas_get_rsc_table(dev, ctx->pas_id, @@ -820,21 +816,16 @@ static void *qcom_scm_pas_get_rsc_table(struct device= *dev, &size); if (IS_ERR(output_rt_tzm)) { ret =3D PTR_ERR(output_rt_tzm); - goto free_input_rt; + goto disable_scm_bw; } =20 tbl_ptr =3D kmemdup(output_rt_tzm, size, GFP_KERNEL); if (!tbl_ptr) { - qcom_tzmem_free(output_rt_tzm); ret =3D -ENOMEM; - goto free_input_rt; + goto disable_scm_bw; } =20 *output_rt_size =3D size; - qcom_tzmem_free(output_rt_tzm); - -free_input_rt: - qcom_tzmem_free(input_rt_tzm); =20 disable_scm_bw: qcom_scm_bw_disable(); --=20 2.47.3 From nobody Sat Sep 26 07:55:27 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 BAA2A4A0910 for ; Thu, 3 Sep 2026 12:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437287; cv=none; b=WH/JJndAXbyretoLRXl8EzsZQ7orrE+IkXH32ceOVqg/eADyiqvHQZWnhJQHWPe4CZ7ane4gE3GYcaa9iSq1G0BZVN2PD5hFxIUm3R9A/ybIkYT1fYE4+ch2uLPUSrmCFIFS1tphDojosf63mF92h0W1oY8IA8xErQ7mBRepLnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437287; c=relaxed/simple; bh=qhduGvxSd60XUwOZ0ZBtDftmYc7RtmVI7jpRodVUmA8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GvNp+wDanq7XIoOmj0UtQObJAuG++VL2zGKZGZPxMNvfsB6pAMlDZ0mKWb9PfvxfwZ7fIYPgcv2/D3fhFAxLz7Uy+MGu6HwDLq7iwP03KlFpyDOZd64EAg2Iq2KGzkhqzLSuV+nokEN4NszelY/hd1DdforION8AS/dLK4IWBBg= 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=b311SuWF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cEFxZPO1; arc=none smtp.client-ip=205.220.180.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="b311SuWF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cEFxZPO1" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 683AwRit749061 for ; Thu, 3 Sep 2026 12:08:02 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= K7U2dd669vcqeaSKivEBKNQUkMuI1kF2iV4ulu1l3Qw=; b=b311SuWFvsuI5pL2 D9G60txHDIqooV+rMRDQHAU2UiDwG1j1Ari+akr3sYEVTjp1NcHAA1rFhXFP79bT W4f7u1a69D44EyYvpp2/5FxO9m/j2/JHECbN9d9WRpt2TE1R1oyk2YjNLUUMKScj 11TBo/ZZYDPn+zwf2LO4q5Jod+I6nkKGPtjgYXWBjfQEDFe1R7nCJVHZpMiHDNZ6 RnTgeq1m4W4YVmn6HaJXRqtiMUHo+DVD2gf46+QcLLy9TNiso7tIhttUIaS4vhE8 pXoQ53LMl1A/dQmfI6e+w1WFvBc4JxnX/MkHaZCaEE5EP4M29PRiivMu6B+PsYgO rdubbA== Received: from mail-ua1-f72.google.com (mail-ua1-f72.google.com [209.85.222.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf1j4hnft-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 12:08:01 +0000 (GMT) Received: by mail-ua1-f72.google.com with SMTP id a1e0cc1a2514c-97e99615e0dso845738241.1 for ; Thu, 03 Sep 2026 05:08:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788437281; x=1789042081; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=K7U2dd669vcqeaSKivEBKNQUkMuI1kF2iV4ulu1l3Qw=; b=cEFxZPO1Mn34rvVSIdnSGiO2XKMho4seRfSmioy7QvbyjpVl7hwZLqjgdXDa0dN9og FVp+t0Jzn/bJv9d36u7Z7eQj7MhNM5d7uew/l6cO97cJed2tM8ZZp/9qc9dSdvbxIoMW i3TtX/KD1TGgfTRQrYOHHEdsmHrkEUpCY0W7hCIigiPMUb8W21SU9QlwNrefCvnvnBXD SWBwUKNziGINTJZgVUPNcsbhy7EdGgwt4c1nqWBgALE0NhN5TbzI1Q4ak5GKId9V0xgB zV1Z8nQXpiGCg7WDXXyqORfcpPfkMmKv2sa8q0aFw6X24J1cXpewwZ7tqCgnMX4Wa+Qd eVMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788437281; x=1789042081; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=K7U2dd669vcqeaSKivEBKNQUkMuI1kF2iV4ulu1l3Qw=; b=jNFtoHkl8pCWqaZ33PdmNVT6EzG6o20Uxlu9mnoQFI1GlrLmHPfuCnI5v6AH8ywk78 GA5SgcAzYHFrWMs0+W1uYymkDZJC4aXso+aaPhIngNpvllQcnWwEkB2eQMe79nGt4wAr 5asMRv7KlkgRRbCWVGTEwnPY36GFQWLboSsJcNGW/588P2C5cVIdn+zaw4pxWKjLDowS ikm2SJKxMzCVSm0A0TVxjBLY8r48MS1mCfD8Tqq27cW7h4Eoy0uw8Age1aHXBYhBHMu/ ZbCf4OcI+OITGX2p80mkDwMNXQizyHDS9XN91fiy9RYPQpa58jP8XA+KE/RnC/VOIfet aSyg== X-Forwarded-Encrypted: i=1; AKwUvBzDM0+hNf4g2apYJ261anqQRFivATs9JFEGHa3bk9LSR4xpK15YP9pbJpJcg0JpjMK2JOpb0Vhg4L/qfUs=@vger.kernel.org X-Gm-Message-State: AFuF++lfWChtE6aNBUPUCMWvOnEBaXtD3NeY6jbqhzKwHYMcZGlfPQx0 Gq0Bm8VaEkvoyihqNlTEY/DcNI7MWH3Rk3u5eCoPLiD46xWnuZg1hwkvyLj4ju4kURP2z//zvB/ Z9GDA+PPqZK7hyHg7KJBeMPIiVMbiLfOYAYpqG18AAPkTEXEfzUt/5kFLDNxY+pcp8tU= X-Gm-Gg: AYBFou3F3c3o9CeBfmvpvWK7hR8gT/S0tkzKZTDjUPkG25CIw32UDSBu/yOoA+NyqAJ lj7JugC4HNfDSc6ioo932xcCWOOCZZ1vjiduLLBLNIytGwtSVsOZqW+otVyFz5pnRpZu6X80ro9 U4IitIsJWG83EnAWfJenQW+xFtuoltwgHatKtPBa664wQf+7JEePpBvayCOggEZeOr7J3I/tzbD hbL9EeLqIG3JRtM8BPT+poeT5L5+4Dmjx7YAHRB+8xNyOaqhtUiqI/X4dF+GYdmZm3tFvBHm+x8 3Q4hoTT8GtbIHNbus9wHEDFc8ZjsOi/Tt2txByZpWFnreuwQQunlBcaoVSmCrs2V9urG78EwJ0c NLquQkdndR1riE3IgwV28kj16DO+r X-Received: by 2002:a05:6102:84d9:b0:778:6695:2f71 with SMTP id ada2fe7eead31-78a2efc74e0mr1126040137.15.1788437281093; Thu, 03 Sep 2026 05:08:01 -0700 (PDT) X-Received: by 2002:a05:6102:84d9:b0:778:6695:2f71 with SMTP id ada2fe7eead31-78a2efc74e0mr1126026137.15.1788437280614; Thu, 03 Sep 2026 05:08:00 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:1c7d:412b:f9d3:3bfc]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cee5d587csm72143115e9.4.2026.09.03.05.07.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 05:07:59 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 03 Sep 2026 14:07:44 +0200 Subject: [PATCH v3 3/4] firmware: qcom: scm: introduce qcom_scm_clk class for clock management 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: <20260903-qcom-scm-code-shrink-v3-3-8237f3a654e1@oss.qualcomm.com> References: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> In-Reply-To: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> To: Bartosz Golaszewski , Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5395; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=qhduGvxSd60XUwOZ0ZBtDftmYc7RtmVI7jpRodVUmA8=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqmWMWKjsfLDVFquC4sq1MYX9dQWCAUXm2cocGi VyqSWA0wdWJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCapljFgAKCRAFnS7L/zaE w+AoEACFXckJe4k4VckvyIBNh9F9o1BjCEbRyVe9HCqOrXkVqa9r0+aXdqqqo7yy4ZRk9mCzYJB Xfvx5e6UZrRyyEc6mqb6cWU8dCf1yHUSZvoquLLrbV7ZfE1LI0tddaoR/2xqEzx2ZpyaNMXZDQK GVFCEXhokA2sTtn48T47VSbZaPuaONVyCD47QMIWKPC6aONdU79COJUX9s5h7zXEvCCGB9YHH/I GVXsv1F9Fxn+dUP3rR7NvXkbf1Tp1hvy5K7CZg6Iiss+TStDp6RjPBBq+3neqsPja6IDDRF2lkH V2FdLlNHMmeBpHewrlbsPMHKon9vzt5bYXvaQF8NaX2Auq7vp5YTViXs+uw9IQh6kmmS1Vh9pHk MvS8Me+sLqaRychtUwNf2EpUswwpxRKBhoqb2e77YMKWzPg/veUHDU+sK3ajsztfMckAU+Pf8Ms uTy2swyys+NDh6JwS3AO28gPxe83BxpRYufT+gyLuozMFNVckyLwNSUgHwg6KL8mSaqemkVbQwN H9e9XmnVKspiCaKc+YIpbVwxmAXQ4zruKsQTz2qygiF5FlZdSYWHxx0q6D87qHM6FxpV7RXb9G9 Z8JN2gGruXx7bDe1oxoHtci797y8eb2O8SrO2hajW0Ob3MJwUj9kVVOEIHK5s4KuIf3Kr5wyRNz 11RHqhoImciI/3A== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=dufrzVg4 c=1 sm=1 tr=0 ts=6a996321 cx=c_pps a=ULNsgckmlI/WJG3HAyAuOQ==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=t9k0K3iV4HLebYkdnPwA:9 a=QEXdDO2ut3YA:10 a=1WsBpfsz9X-RYQiigVTh:22 X-Proofpoint-GUID: trX5nquZ-_jxT2xcJWBQi2reWE5L_Ul7 X-Proofpoint-ORIG-GUID: trX5nquZ-_jxT2xcJWBQi2reWE5L_Ul7 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfX2WPvaAD8ss6O 26u9QJIDlEcv+8hzJm1yyLftnEKL3ANWPcmVN6smyuZRMNWN6dlpkRchZrB0vn51UxJjFsIM7N+ eivSzcnC8OoFQF9TKu+xCW3+gM4UMJs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfX1+TezViqGcUF nh4+P5SzOmvYl1YKWhXVSW/rJrh6u+zWLqFjHgRU0cbjz87Y2KXyyEwz3t/iWth+77FxNr7sxBd CvCNJVyD8Pmn3odDngn5WB5C5uWRzd9yRfVW/OVp3uucWORN6Ce5Uvo9paBnqpJts83x8UDkciH nE9lAagkUfzZVVddVeQWxe8Ne/M5oxjvctFuXRo5i4fUtRZlDQoT8F2R0r03o6LOgGYkvPklyex s+UmBOZau2Hu3sWuHZqZrQRk4ySYBeTst6lJ6Z2+WePSE/hoyUc+f+AkxYXDwlGKHpgnyohfMjD /NmdDATBURZlak2ltjHpn1aVauH9L85SfUVBYAq2y2Pjg3jB2mP8rCTKcUbsifEj+cxnI/09xo2 olvRaXYhNquLa5LWnJQ+5EF9fzcL2EwIYpSDk4lpUbtvIoXef6NySV3Y4MGXWdvMKm8oHkNsdds 7Qw0u76q2ns+b/c4Low== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_03,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 malwarescore=0 bulkscore=0 suspectscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030105 Define DEFINE_CLASS(qcom_scm_clk) that calls qcom_scm_clk_enable() on construction and automatically calls qcom_scm_clk_disable() at scope exit *if* the enable succeeded. This allows us to convert all call sites to using CLASS(qcom_scm_clk, clk)() instead of the manual enable/check/disable pattern and to remove the associated goto labels. Reviewed-by: Konrad Dybcio Reviewed-by: Mukesh Ojha Signed-off-by: Bartosz Golaszewski --- drivers/firmware/qcom/qcom_scm.c | 89 +++++++++++++++---------------------= ---- 1 file changed, 34 insertions(+), 55 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 7320d3cfbb9930ca1ed5de38294f871b472f6f93..f0578f0f55563c34a6875377e44= 4dbb674fc61b7 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -209,6 +209,9 @@ static void qcom_scm_clk_disable(void) clk_disable_unprepare(__scm->bus_clk); } =20 +DEFINE_CLASS(qcom_scm_clk_guard, int, if (!_T) qcom_scm_clk_disable(), + qcom_scm_clk_enable(), void) + static int qcom_scm_bw_enable(void) { int ret =3D 0; @@ -509,13 +512,11 @@ static int qcom_scm_disable_sdi(void) }; struct qcom_scm_res res; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ret; + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return clk_guard; ret =3D qcom_scm_call(__scm->dev, &desc, &res); =20 - qcom_scm_clk_disable(); - return ret ? : res.result[0]; } =20 @@ -589,22 +590,19 @@ static int __qcom_scm_pas_init_image(struct device *d= ev, u32 pas_id, }; int ret; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ret; + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return clk_guard; =20 ret =3D qcom_scm_bw_enable(); if (ret) - goto disable_clk; + return ret; =20 desc.args[1] =3D mdata_phys; =20 ret =3D qcom_scm_call(dev, &desc, res); qcom_scm_bw_disable(); =20 -disable_clk: - qcom_scm_clk_disable(); - return ret; } =20 @@ -699,20 +697,17 @@ static int qcom_scm_pas_mem_setup(struct device *dev,= u32 pas_id, }; struct qcom_scm_res res; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ret; + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return clk_guard; =20 ret =3D qcom_scm_bw_enable(); if (ret) - goto disable_clk; + return ret; =20 ret =3D qcom_scm_call(dev, &desc, &res); qcom_scm_bw_disable(); =20 -disable_clk: - qcom_scm_clk_disable(); - return ret ? : res.result[0]; } =20 @@ -777,13 +772,13 @@ static void *qcom_scm_pas_get_rsc_table(struct device= *dev, void *tbl_ptr; int ret; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ERR_PTR(ret); + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return ERR_PTR(clk_guard); =20 ret =3D qcom_scm_bw_enable(); if (ret) - goto disable_clk; + return ERR_PTR(ret); =20 /* * TrustZone can not accept buffer as NULL value as argument hence, @@ -830,9 +825,6 @@ static void *qcom_scm_pas_get_rsc_table(struct device *= dev, disable_scm_bw: qcom_scm_bw_disable(); =20 -disable_clk: - qcom_scm_clk_disable(); - return ret ? ERR_PTR(ret) : tbl_ptr; } =20 @@ -848,20 +840,17 @@ static int qcom_scm_pas_auth_and_reset(struct device = *dev, u32 pas_id) }; struct qcom_scm_res res; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ret; + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return clk_guard; =20 ret =3D qcom_scm_bw_enable(); if (ret) - goto disable_clk; + return ret; =20 ret =3D qcom_scm_call(dev, &desc, &res); qcom_scm_bw_disable(); =20 -disable_clk: - qcom_scm_clk_disable(); - return ret ? : res.result[0]; } =20 @@ -924,20 +913,17 @@ static int qcom_scm_pas_shutdown(struct device *dev, = u32 pas_id) }; struct qcom_scm_res res; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ret; + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return clk_guard; =20 ret =3D qcom_scm_bw_enable(); if (ret) - goto disable_clk; + return ret; =20 ret =3D qcom_scm_call(dev, &desc, &res); qcom_scm_bw_disable(); =20 -disable_clk: - qcom_scm_clk_disable(); - return ret ? : res.result[0]; } =20 @@ -1695,18 +1681,13 @@ EXPORT_SYMBOL_GPL(qcom_scm_import_ice_key); */ bool qcom_scm_hdcp_available(void) { - bool avail; - int ret =3D qcom_scm_clk_enable(); + CLASS(qcom_scm_clk_guard, clk_guard)(); =20 - if (ret) - return ret; - - avail =3D __qcom_scm_is_call_available(__scm->dev, QCOM_SCM_SVC_HDCP, - QCOM_SCM_HDCP_INVOKE); - - qcom_scm_clk_disable(); + if (clk_guard) + return false; =20 - return avail; + return __qcom_scm_is_call_available(__scm->dev, QCOM_SCM_SVC_HDCP, + QCOM_SCM_HDCP_INVOKE); } EXPORT_SYMBOL_GPL(qcom_scm_hdcp_available); =20 @@ -1744,15 +1725,13 @@ int qcom_scm_hdcp_req(struct qcom_scm_hdcp_req *req= , u32 req_cnt, u32 *resp) if (req_cnt > QCOM_SCM_HDCP_MAX_REQ_CNT) return -ERANGE; =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - return ret; + CLASS(qcom_scm_clk_guard, clk_guard)(); + if (clk_guard) + return clk_guard; =20 ret =3D qcom_scm_call(__scm->dev, &desc, &res); *resp =3D res.result[0]; =20 - qcom_scm_clk_disable(); - return ret; } EXPORT_SYMBOL_GPL(qcom_scm_hdcp_req); --=20 2.47.3 From nobody Sat Sep 26 07:55:27 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 3923B4A0933 for ; Thu, 3 Sep 2026 12:08:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437290; cv=none; b=VrQPVcMybIxt19RcpsaQ8ja0Tde+lSgqnBhRbWlY6O5hYz+AF0M2+EKlY2v5CFnzITcfKioiybiyGpdzCJEzxcnYzgYmuxLRK2/BXFvWp+4OGMkf7Px+yHYOgIegV4NIdTnoFjppVegYTgOm1L4g9HAAbUlSCFxobCS7DSzAMPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437290; c=relaxed/simple; bh=gR502NFg7Egn9IOsKEHPuh0JyLkSs1F8+1Bwq3pKdVM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W0uBITlK612+hhMSlmI2/xNRevTZAc/sLwSA0iLxNqgXnkubJndI0nT4YncR3+ajQ6VMMPah0uJRUvFZpvAq0J4C5mSfNyHXg5rPMYqxsQrewkE6W/4YPqsvZJp7t6okMTCx0wv4HT5r/KNC7P6/v6Tbq1KGR7PVblA+XpxhZrc= 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=KKu/wBs1; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XD/kdvgM; arc=none smtp.client-ip=205.220.180.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="KKu/wBs1"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XD/kdvgM" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 683BTJ5K210333 for ; Thu, 3 Sep 2026 12:08:04 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= t8LQU5O1Q0Iv5afw3UZ3mioVuPVN+6pqIdL01EBICTU=; b=KKu/wBs1PVwFeXOh /jDqD4aNTXtWYjDNrjKgiKwkgq4QSjO6gcPkns9tY/ztntalqqeA+QReBYWwWyd+ Py1CAd2MhxKPOJ+jB9vWIbui5o6fFf8qarYCUkvunnSo9IFRWtDYLPLIhYKs19fS 6SboTg0bYWIvlvMPUYW5G4NdzRkWi6A6XUbo0tiRcTubH2lBiflnfiwRSpwVSpnp RQsuZBvigsMmgdO7XZHIUIeypDA8/1Ru37NOhCHEhWUXVskE450wntlDCONGtn3U jR3SBAOVwkboMYxFYfal/MgXszUA8vgOXVWSRlXvWGw4/6i1M/SPg654gp50/0KL Dy5FrA== Received: from mail-vs1-f70.google.com (mail-vs1-f70.google.com [209.85.217.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gf82k84s9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 03 Sep 2026 12:08:04 +0000 (GMT) Received: by mail-vs1-f70.google.com with SMTP id ada2fe7eead31-74748e3a5b6so1027108137.1 for ; Thu, 03 Sep 2026 05:08:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788437283; x=1789042083; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=t8LQU5O1Q0Iv5afw3UZ3mioVuPVN+6pqIdL01EBICTU=; b=XD/kdvgMGOz6vI8Jg0hU8WO85rN3Ex/b07rhzgoy6ftoH+vyI1hsBU16q7Iiz0aINK 56mtq4BNvz3/XVziFMJ7hNUiWl6/p3kl0MikjE4O6a7tHRo7gbyiFUqhGtXZe0X82di+ We5iFDsMxbtE50/hQF88UTc/Hlw2HZb14kThrK9yiOqYN3oZ9938RsfbQjOOKxVW2dgr NLvN/r2sRCYQcPYNO73562LdlzzObWXnuhHsUOnfXdon3So0jb3WKIgQN0kMoDkgLbnf GXobVmKmYTRSoPvEUIahz4eYvXFyUOUnjPeGVOCIg3OVtGkoMcru31Jr7p2maX+F8xrH ayUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788437283; x=1789042083; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=t8LQU5O1Q0Iv5afw3UZ3mioVuPVN+6pqIdL01EBICTU=; b=OKNilMCtaO1RLFeB5mqWub1d3uZx8aG3FHXIF1tZMFtHecNOWmGs03XJTgRmU8Fbhj x3orU82+BNg5XZQOUq2oXrELhVCSwQaHUi8+HTJOTmmbonk7EG0vDA0mU/BDMiulEdvV V54b658weNg/8fDmNWCZZlp5tzrQrp4PxTfiQbuTFXeCDuITRc3eSIalciGb6ze6vU/P SEB3lzAHB3nsUhW6yVnJarBLVzATkRNnXuzikc+1uS9hs8N8DytC854Ytg+ON8ZVcRx0 iXiV/eRywnahvxGzgxgCSb3GeBBZg1XVfN2dhMHHf+r8ByE8i6vLu0MAFvsZa+h1Dagm Oauw== X-Forwarded-Encrypted: i=1; AKwUvByQoJlitpmeoRr2Hc+eNYMGEFtyQRHSIzC2fxTpS2RB9vlEVynXaZ54z7gUYhszAh4tQOKTrjhfiLHlVss=@vger.kernel.org X-Gm-Message-State: AFuF++mvL5ariVUfOWkjoem40V+qnMS/tJmr3x4GJHeN9LQ43BQGDgaU KrqkzEoWi6Dgq0OIfR2csA6lE0Gsm540y0QA+f/h/djYCMpmq6U65Mq8kLRSIK0I2WU0SvyLJnb +cnKclhbm8BztIWbunO6R4GHwiOjdFkCSJqAFUE/+xwqW2ZAE5t+mHsi/4ZWTS6C+YEg= X-Gm-Gg: AYBFou3+rkc4pFIcuhlZQUVzi8Co+5TrqwATzGF1trlSxcvGwaOq2HFhxQ5RkYipVWQ tl68bbPCZiZMJJtssgdrKTSOQ67fThcbHrHbWAEQkLSWH7cta6Wd+MgYedu9hbY+yd2olB33WMJ tEhtZLQhTeKcCOXMk4ySAChudtbiNjwA62fzSBtS48wO98fgTPe2AHM9rOH3u9HJBEKt/sUCK97 VKiXHVsqqpFN9I8Q1Ulhjv80H7IcSGqne/xtfSQBceRBO4ynRjAXcRnhCIf9/JIfJq01oQC28iA j2c2EIxLienUIfVXAnFDnsgMaoDnGKhStPqqOcyNJRhtWc4BYEwC11BLeaA/feQBralSni8XZRd PWo/52Rna8oXNynK0/H6tTpB+DGDS X-Received: by 2002:a05:6102:30c6:20b0:780:c9c:bfcd with SMTP id ada2fe7eead31-78a2f00e2a9mr1046489137.17.1788437283434; Thu, 03 Sep 2026 05:08:03 -0700 (PDT) X-Received: by 2002:a05:6102:30c6:20b0:780:c9c:bfcd with SMTP id ada2fe7eead31-78a2f00e2a9mr1046484137.17.1788437283020; Thu, 03 Sep 2026 05:08:03 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:1c7d:412b:f9d3:3bfc]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49cee5d587csm72143115e9.4.2026.09.03.05.08.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 05:08:01 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 03 Sep 2026 14:07:45 +0200 Subject: [PATCH v3 4/4] firmware: qcom: scm: introduce qcom_scm_bw class for bandwidth management 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: <20260903-qcom-scm-code-shrink-v3-4-8237f3a654e1@oss.qualcomm.com> References: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> In-Reply-To: <20260903-qcom-scm-code-shrink-v3-0-8237f3a654e1@oss.qualcomm.com> To: Bartosz Golaszewski , Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski , Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4454; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=gR502NFg7Egn9IOsKEHPuh0JyLkSs1F8+1Bwq3pKdVM=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqmWMXWwj2dQ9PDWHgoE11vE8w+clNmmmpdcAbx 5ShwnOicP+JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCapljFwAKCRAFnS7L/zaE w/JjD/4oW7KwlXS5Lz9I+yU+aYflL013g9qHMhzp6Bpnywv2kE1dLVsRp6FjW+O0IKMjkbiBrc0 b2JlUg7i/rM5OVHP4tH1F2g1OB0V1fvGFbR0J6wCK9TKHMEfkg1zRHgT3RuP8HXtQ12geqG0CIt bDDY7Jbwp0GpFVAPrWQTs8m+RXS60s+ZWohzYYBz0sOK477C2aOd+Pnpm4ZE7Wq90cugC5udTyx 2Crej2+eM6WTLEsfp/lbVA0A+/PklTVXuJDevrF4FRW7bwBWvurb+HZfunYDYo685sCJ5PN/vIR PEsvRxbcEnoVtWkGQLPUkHNSTori5eg54ExPvVVFvYPKEO9rGGZydqPP6J1ZOzO1wT2XWo/+boZ EHBco5vxoZejA/Ghem6bhk8YmEXsTf9dt+MckeB8SAL8WscfCe9pr41UL2mTftdDcC7YcBfE3F+ rGFw/CBs9nmrmzCR4zl9AttnX3yalc6XiLT50m4Rpt0fVwh8w/Q/BWb8Q1F9LHE1r4aZCYuYxIN Nt4RYKxuQmlNI1q0Hy7PTimpyDLx7D5u3yG/ig/sQ/otf93xHOtbFrW3VfKhItjEBxEYviaH0cx bc+R7o4Np4mpSzN8FPmamw5yiuDdSr9Q0BVtQcUIMsinh8vr4KdQZ87hW8gIekCcguySyuoJHdN p2BnzIpfV7Oxl2A== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: Nkd8fwn7a43FTOS6qSuFfesDcwGT7NkF X-Proofpoint-ORIG-GUID: Nkd8fwn7a43FTOS6qSuFfesDcwGT7NkF X-Authority-Analysis: v=2.4 cv=OuJ/DS/t c=1 sm=1 tr=0 ts=6a996324 cx=c_pps a=N1BjEkVkxJi3uNfLdpvX3g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=jpxe35GwxECRtIIZr6QA:9 a=QEXdDO2ut3YA:10 a=crWF4MFLhNY0qMRaF8an:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfX9Xo1WKmMun/G vbKBpgE2GUwWy38nav3SoGlYJjL9XKPEcXsTaUIKZNWoI6J7Cfx9YZC+RPU7rpQIIAqOxvULUPi fu5OhFD4BUZkcVw3ZnYXi2/x2KCEV/y6HyhHoL/XoCCnntGlA04x38+7oMjNLaqJmOSqjh7waat mzsIHHUH4okfkoIS9ud7XO7gec0cyz139ew7x6YfM+nrLiZJUi7ZqKW/I4uqTwK/3/FQcNduWNK L44nSrzzmtSFKqCR0JgyiBMxnbpFxc5xHLqY3Cl+PpjhSJDzTA0XIFFv9SQ7auluV/ySGx+j83p HCss9D4Lm5e9/KAj8u19NCLdt2XfnNMAckhHSuk172nZ4/qNVY/2yJEhnpAJJDVwHQh4rLVNQUm +wT4lJuk2YM0zHF6v6MA6cOxFGyDsdrjOSzmdMBQKTh2TG8n2hC9JtzCUjvOPqh1aHU1xBZSMlu VJLS1s/elB2R/6IouGg== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAzMDEwNSBTYWx0ZWRfX93rdrXfksG8s q7qATbezegjyBdi2lzrJxh3GTLLznBfkDUYyB2RVDuXrII4l0g3dwttrxXOhcnQDiMgkNLLDxT2 1ob4jui8XRdYqXPlfCny4SoI6/OOb1I= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-03_03,2026-09-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 spamscore=0 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609030105 Define DEFINE_CLASS(qcom_scm_bw) that calls qcom_scm_bw_enable() on construction and automatically calls qcom_scm_bw_disable() at scope exit *if* the enable succeeded. This allows us to convert all call sites to using CLASS(qcom_scm_bw, bw)() instead of the manual enable/check/disable pattern and to remove the associated goto labels in cleanup path. Reviewed-by: Konrad Dybcio Reviewed-by: Mukesh Ojha Signed-off-by: Bartosz Golaszewski --- drivers/firmware/qcom/qcom_scm.c | 61 ++++++++++++++++--------------------= ---- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index f0578f0f55563c34a6875377e444dbb674fc61b7..ce6f1ed3739ce08d5890dc64236= 12b841747539d 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -244,6 +244,9 @@ static void qcom_scm_bw_disable(void) mutex_unlock(&__scm->scm_bw_lock); } =20 +DEFINE_CLASS(qcom_scm_bw_guard, int, if (!_T) qcom_scm_bw_disable(), + qcom_scm_bw_enable(), void) + enum qcom_scm_convention qcom_scm_convention =3D SMC_CONVENTION_UNKNOWN; static DEFINE_SPINLOCK(scm_query_lock); =20 @@ -594,14 +597,13 @@ static int __qcom_scm_pas_init_image(struct device *d= ev, u32 pas_id, if (clk_guard) return clk_guard; =20 - ret =3D qcom_scm_bw_enable(); - if (ret) - return ret; + CLASS(qcom_scm_bw_guard, bw_guard)(); + if (bw_guard) + return bw_guard; =20 desc.args[1] =3D mdata_phys; =20 ret =3D qcom_scm_call(dev, &desc, res); - qcom_scm_bw_disable(); =20 return ret; } @@ -701,12 +703,11 @@ static int qcom_scm_pas_mem_setup(struct device *dev,= u32 pas_id, if (clk_guard) return clk_guard; =20 - ret =3D qcom_scm_bw_enable(); - if (ret) - return ret; + CLASS(qcom_scm_bw_guard, bw_guard)(); + if (bw_guard) + return bw_guard; =20 ret =3D qcom_scm_call(dev, &desc, &res); - qcom_scm_bw_disable(); =20 return ret ? : res.result[0]; } @@ -770,15 +771,14 @@ static void *qcom_scm_pas_get_rsc_table(struct device= *dev, struct resource_table empty_rsc =3D {}; size_t size =3D SZ_16K; void *tbl_ptr; - int ret; =20 CLASS(qcom_scm_clk_guard, clk_guard)(); if (clk_guard) return ERR_PTR(clk_guard); =20 - ret =3D qcom_scm_bw_enable(); - if (ret) - return ERR_PTR(ret); + CLASS(qcom_scm_bw_guard, bw_guard)(); + if (bw_guard) + return ERR_PTR(bw_guard); =20 /* * TrustZone can not accept buffer as NULL value as argument hence, @@ -793,10 +793,8 @@ static void *qcom_scm_pas_get_rsc_table(struct device = *dev, void *input_rt_tzm __free(qcom_tzmem) =3D qcom_tzmem_alloc(__scm->mempool, input_rt_size, GFP_KERNEL); - if (!input_rt_tzm) { - ret =3D -ENOMEM; - goto disable_scm_bw; - } + if (!input_rt_tzm) + return ERR_PTR(-ENOMEM); =20 memcpy(input_rt_tzm, input_rt, input_rt_size); =20 @@ -809,23 +807,16 @@ static void *qcom_scm_pas_get_rsc_table(struct device= *dev, input_rt_tzm, input_rt_size, &size); - if (IS_ERR(output_rt_tzm)) { - ret =3D PTR_ERR(output_rt_tzm); - goto disable_scm_bw; - } + if (IS_ERR(output_rt_tzm)) + return output_rt_tzm; =20 tbl_ptr =3D kmemdup(output_rt_tzm, size, GFP_KERNEL); - if (!tbl_ptr) { - ret =3D -ENOMEM; - goto disable_scm_bw; - } + if (!tbl_ptr) + return ERR_PTR(-ENOMEM); =20 *output_rt_size =3D size; =20 -disable_scm_bw: - qcom_scm_bw_disable(); - - return ret ? ERR_PTR(ret) : tbl_ptr; + return tbl_ptr; } =20 static int qcom_scm_pas_auth_and_reset(struct device *dev, u32 pas_id) @@ -844,12 +835,11 @@ static int qcom_scm_pas_auth_and_reset(struct device = *dev, u32 pas_id) if (clk_guard) return clk_guard; =20 - ret =3D qcom_scm_bw_enable(); - if (ret) - return ret; + CLASS(qcom_scm_bw_guard, bw_guard)(); + if (bw_guard) + return bw_guard; =20 ret =3D qcom_scm_call(dev, &desc, &res); - qcom_scm_bw_disable(); =20 return ret ? : res.result[0]; } @@ -917,12 +907,11 @@ static int qcom_scm_pas_shutdown(struct device *dev, = u32 pas_id) if (clk_guard) return clk_guard; =20 - ret =3D qcom_scm_bw_enable(); - if (ret) - return ret; + CLASS(qcom_scm_bw_guard, bw_guard)(); + if (bw_guard) + return bw_guard; =20 ret =3D qcom_scm_call(dev, &desc, &res); - qcom_scm_bw_disable(); =20 return ret ? : res.result[0]; } --=20 2.47.3