From nobody Fri Jul 24 21:53:26 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 216483D7D7E for ; Fri, 24 Jul 2026 09:49:52 +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=1784886594; cv=none; b=BRHEXffJH8/7xaPsIiSHythQ2nIdK6rSPZ3oojA1ufiB63c3P4iG+MpparNdRDQIyx/HSXh6L2MnhenTAa0+SddSNlSIpHvfNn3Z64JXWE6OIOwedWZubfEoCN2jPg1u8QJk89JAplXSoGl791IRONP3DZuDkJgCUWcPkRUNPr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784886594; c=relaxed/simple; bh=9IiThhlgGdRoYecOf0KfCkM2THGZsvFJP9Gc9AfcUJI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ud4jmqObN9oj1WHll/7miVCGIujAN4W0KjtnDicIFHHqKdQtIy6ESHvWOmTizUcRqtI9NkPMOUYkTl56HhWpPNEjaMK7T8CU/x/tuABJ8VpS3FVoxUrjR4cMi/gQVGVUAeb99I/1m7TfPGHFRLBk6kMS5TilsBrZZI7pufRaouk= 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=RB8xumex; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=PQOQc2dn; 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="RB8xumex"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="PQOQc2dn" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O4lVIM1977089 for ; Fri, 24 Jul 2026 09:49:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Gk+h7L/tgiz KZ6Qx/taVDubKl52Owvm0JVk34OyToC4=; b=RB8xumexS2vx8xzfgqCJcjI5mlf haAIYvF9Btp8PafJfOgm5bshC6kQJi3pN4sTxPFOGEwRG2zPzg0+/6qnXUeeKMAm ZAXW23oSXfu/q0zam+SyDdGePAb62bzLi+thyWc7U43+0CTBYDRATn2lShel5+iz jn9ITr6eX5hLva43isz6x1yqkG9Pi+0HH9i8AkEfIM9I3k0Es31v3WrLT3BR4xZT enVeKy7A09JEaIZFE39b7tHmwNXqyQcrtto1G3VRRE8V9AnNHKEmLsJTS2oU2BFU d21xLgruWiQecadox8X0ZepRwM0kP8R5NdO4k1pByuYi0VC/dZp9tV02TZw== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fknbmkv1x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 09:49:51 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-ca6bd8a190cso420406a12.0 for ; Fri, 24 Jul 2026 02:49:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784886591; x=1785491391; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Gk+h7L/tgizKZ6Qx/taVDubKl52Owvm0JVk34OyToC4=; b=PQOQc2dnNaTSh0K1Ux7+TCdsm8XQYRr5ccv26dNZKZh9GyMzf4b8dLopsuWHVc5hbA EZ6Gd27PMqsJHjjvSM94gjQuNNJ25DyOwx6vnArcpVC8TSp5AiW8g20uiJx8ZgBxZLlr AIOGVbbFmARzDx+Btcf/UKHg/KVNYIkN2ps4d9XnJwV1wrIWUWNQWXLAcYIkqwnb+TH5 ipN8/CuW5cRUru91BqVJ4IMxeACsmL872NUYc9kOqza7uU23PQLctJq4SBxxRcOSypId b8zWO1QA2YP7iVpS6rjWG8LfaLu84KLBdXEGf5Xek8UOyKw/ycoLqiDCXBoNzsA99Ph+ HfdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784886591; x=1785491391; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Gk+h7L/tgizKZ6Qx/taVDubKl52Owvm0JVk34OyToC4=; b=Uee7lc0AvUNmUnWrPAwEY4MMCzAyF4aVzXF0J2JiNeZbrsRj/oY2qxCXBOYaY/q2IE psxCBR+mQ7Ktm8WgAT5QCMuZoPA9jcBmmZJzxJWqPeELpC/qdOLqkKcQPVOFa26wybtI IwtAsweEv2GLWA84Fa+Utwkv1ti9rv2g+u35CF+enAF+tbD9VNDlZAexDG3fWWVjn8pu gYEMXSgqviCQ23YVtcWWc8VubiT0/rS/K4sPyA7zUjbJVGv4Qd2NthtF+1ixQGmlnLSt Y4VrLmVN6WqfWiI+Lf4knV23RVZxKgnnqnXrZcQ3udQZJF1cMriyF+hDxuvl8PxCiSjO r6+A== X-Forwarded-Encrypted: i=1; AHgh+RrEVASfizBsIlHQfIMkssqN+tVXHGG6LF7p+5WbFbxTpOSW+ZuutqQmceWGU6wFey65LtIWpej3rMzzDbI=@vger.kernel.org X-Gm-Message-State: AOJu0YyggxdCSycP6UzoeliJNxug4UT12foQ0Ss0mGb3ufMOiQBELWcs Y138H7skMkTIcc89dtw6tV5ILzE3vO4KPOsWO+h2IBGhanpdmJl3/BvnoOP3R1xgYKebiBkKQko VfwcvGok0a+7P5srwYnrPtPiWA0kFiWipAOMWxAfD6bB983ZTIv/O4psZ76JVq9x3uzI= X-Gm-Gg: AR+sD11Zx/M5WIJOhyQ4Vzu3lOtAFHaJ5MB0YE2p4Gw6sJJAE/WVOe+He7L+51qXGi+ yKDJqwlHIXXwxEOU3CgLAIUtrAkB1TicKqeJZv6TTj/JApqN93742TI0tXzmBUtzM+14jqACdbc a/QNsky3c3MwXYIrPzCXEyRCxv4gOgH/rZPtqZPaugNZIsQJy920QVkMHxxADEmkfnEzWpZRh2T ifExv8iUojc9SfMHjY1apuK5rpnm5/ycCToLKg/AIh6HTe8v02q6MoN3xZVeJkrCjVmcAVbf0X9 1efhRV59uw419toKU2dqPA9rTO9XixbeIkJhogipmCY/1v0hkVCmeu1qd0n4b2hhZK0RqGpMW55 EVuQVcuYPXNK3JlFJwOBtgZqyJcE= X-Received: by 2002:a05:6a21:6b0f:b0:3c3:875d:c538 with SMTP id adf61e73a8af0-3c44afb1a94mr8180694637.8.1784886590818; Fri, 24 Jul 2026 02:49:50 -0700 (PDT) X-Received: by 2002:a05:6a21:6b0f:b0:3c3:875d:c538 with SMTP id adf61e73a8af0-3c44afb1a94mr8180672637.8.1784886590327; Fri, 24 Jul 2026 02:49:50 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbb8f1a8a7csm3961013a12.24.2026.07.24.02.49.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 02:49:50 -0700 (PDT) From: Mukesh Ojha To: Bjorn Andersson , Konrad Dybcio , Bartosz Golaszewski , Guru Das Srinagesh , Sibi Sankar , Elliot Berman , Andrew Halaney Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha , Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v4 1/3] firmware: qcom: scm: Fix NULL dereference in IRQ handler before __scm is published Date: Fri, 24 Jul 2026 15:19:37 +0530 Message-ID: <20260724094939.613844-2-mukesh.ojha@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724094939.613844-1-mukesh.ojha@oss.qualcomm.com> References: <20260724094939.613844-1-mukesh.ojha@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=e742j6p/ c=1 sm=1 tr=0 ts=6a63353f cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=oeUS87UVm4c7YcJ927QA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: qAb6fwJn_MRSsXqi3dza-GA4Jkw-MIye X-Proofpoint-GUID: qAb6fwJn_MRSsXqi3dza-GA4Jkw-MIye X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA4OSBTYWx0ZWRfX0epT/hX6MlJX JIeLduvP8GQYLUvCRRqWcusgBLmh1RSCtKs6Psr9FeYFVMRiI6nX1llJkpBzjaKwWbGGyDpgz75 WU95OSCrSyNkUAkpmcjxUMATPDEz8d4= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA4OSBTYWx0ZWRfXxfJToAYVRAMv tUy35GUml9WUCre1map9hs8TsTNmu/Dfa/iWnY/TOLgTmQkLBs9ulxKd7is+8GLYfFRgrqwTJuq Mt+Jftw06PdWEc8aCQ0FzmTJbfp8D+tesV/pEYDWt52xNRhcd5Tz7Dt5KKVW1RvznqvMOtgza4P 34BZtauXrS/JDLHZ3GtCtCxcUh+JjoZJRZ5P4j0B9zHlHEc+7zUV6ciGMOHDsh5HuEccosUa4LH 6qlX4GN5q+f740SeDkWRI3kTRfb1WuWJMQPbNH+S4DC31jtsyo30tgmbfvKI41VafGVGFwDd5Iy 5MET1D47FV5TUXMTHyB9LJ6RId2/JjzorIFLmaVWpvDsWAfZIUc3ZZgZv9JHqcW/hkI6bw5qzd8 +nYt3dGMCS4fH82DBJMAKadpAG0v070nyYREuA7Q4IUwXnRlZwlbr9Ip3wuT2Vk2RwIJPhbt51R 7rIubuW0XIjjlPIHiTQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 impostorscore=0 priorityscore=1501 lowpriorityscore=0 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240089 Content-Type: text/plain; charset="utf-8" In qcom_scm_probe(), devm_request_threaded_irq() is called before smp_store_release(&__scm, scm). Two paths can dereference __scm before it is published, both causing a NULL pointer dereference. The IRQ handler receives scm via its data argument but passes only wq_ctx to qcom_scm_waitq_wakeup() and qcom_scm_get_completion(), which then dereference __scm directly. Thread scm through both functions so the IRQ handler path never touches __scm. Non-atomic SMC calls made during probe (e.g. from qcom_tzmem_init via qcom_scm_shm_bridge_enable) can return WAITQ_SLEEP, causing qcom_scm_wait_for_wq_completion() to run before __scm is published and dereference it. Add platform_set_drvdata(pdev, scm) early in probe and change qcom_scm_wait_for_wq_completion() to take the device pointer and use dev_get_drvdata() to reach scm, removing any dependency on __scm. Fixes: 6bf325992236 ("firmware: qcom: scm: Add wait-queue handling logic") Reviewed-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm-smc.c | 2 +- drivers/firmware/qcom/qcom_scm.c | 22 ++++++++++------------ drivers/firmware/qcom/qcom_scm.h | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm-smc.c b/drivers/firmware/qcom/q= com_scm-smc.c index 01999c22659c..127365ab11fc 100644 --- a/drivers/firmware/qcom/qcom_scm-smc.c +++ b/drivers/firmware/qcom/qcom_scm-smc.c @@ -111,7 +111,7 @@ static int __scm_smc_do_quirk_handle_waitq(struct devic= e *dev, struct arm_smccc_ smc_call_ctx =3D res->a2; =20 trace_scm_waitq_sleep(wq_ctx, smc_call_ctx); - ret =3D qcom_scm_wait_for_wq_completion(wq_ctx); + ret =3D qcom_scm_wait_for_wq_completion(dev, wq_ctx); if (ret) return ret; =20 diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index f35f2ee39130..3b271948d326 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -2644,23 +2644,20 @@ static int qcom_scm_get_waitq_irq(struct qcom_scm *= scm) return irq_create_fwspec_mapping(&fwspec); } =20 -static struct completion *qcom_scm_get_completion(u32 wq_ctx) +static struct completion *qcom_scm_get_completion(struct qcom_scm *scm, u3= 2 wq_ctx) { - struct completion *wq; - - if (WARN_ON_ONCE(wq_ctx >=3D __scm->wq_cnt)) + if (WARN_ON_ONCE(wq_ctx >=3D scm->wq_cnt)) return ERR_PTR(-EINVAL); =20 - wq =3D &__scm->waitq_comps[wq_ctx]; - - return wq; + return &scm->waitq_comps[wq_ctx]; } =20 -int qcom_scm_wait_for_wq_completion(u32 wq_ctx) +int qcom_scm_wait_for_wq_completion(struct device *dev, u32 wq_ctx) { + struct qcom_scm *scm =3D dev_get_drvdata(dev); struct completion *wq; =20 - wq =3D qcom_scm_get_completion(wq_ctx); + wq =3D qcom_scm_get_completion(scm, wq_ctx); if (IS_ERR(wq)) return PTR_ERR(wq); =20 @@ -2669,11 +2666,11 @@ int qcom_scm_wait_for_wq_completion(u32 wq_ctx) return 0; } =20 -static int qcom_scm_waitq_wakeup(unsigned int wq_ctx) +static int qcom_scm_waitq_wakeup(struct qcom_scm *scm, unsigned int wq_ctx) { struct completion *wq; =20 - wq =3D qcom_scm_get_completion(wq_ctx); + wq =3D qcom_scm_get_completion(scm, wq_ctx); if (IS_ERR(wq)) return PTR_ERR(wq); =20 @@ -2700,7 +2697,7 @@ static irqreturn_t qcom_scm_irq_handler(int irq, void= *data) goto out; } =20 - ret =3D qcom_scm_waitq_wakeup(wq_ctx); + ret =3D qcom_scm_waitq_wakeup(scm, wq_ctx); if (ret) goto out; } while (more_pending); @@ -2804,6 +2801,7 @@ static int qcom_scm_probe(struct platform_device *pde= v) return -ENOMEM; =20 scm->dev =3D &pdev->dev; + platform_set_drvdata(pdev, scm); ret =3D qcom_scm_find_dload_address(&pdev->dev, &scm->dload_mode_addr); if (ret < 0) return dev_err_probe(&pdev->dev, ret, diff --git a/drivers/firmware/qcom/qcom_scm.h b/drivers/firmware/qcom/qcom_= scm.h index caab80a73e17..cf90a565fdfb 100644 --- a/drivers/firmware/qcom/qcom_scm.h +++ b/drivers/firmware/qcom/qcom_scm.h @@ -66,7 +66,7 @@ struct qcom_scm_res { u64 result[MAX_QCOM_SCM_RETS]; }; =20 -int qcom_scm_wait_for_wq_completion(u32 wq_ctx); +int qcom_scm_wait_for_wq_completion(struct device *dev, u32 wq_ctx); int scm_get_wq_ctx(u32 *wq_ctx, u32 *flags, u32 *more_pending); =20 #define SCM_SMC_FNID(s, c) ((((s) & 0xFF) << 8) | ((c) & 0xFF)) --=20 2.53.0 From nobody Fri Jul 24 21:53:26 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 7BBA33DAABB for ; Fri, 24 Jul 2026 09:49:56 +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=1784886597; cv=none; b=BovfTNFYomo4dvMRITTXOFGA5gEN7Nx+GhMaxq9MVezoemBS2DjqOxD5iL9is30HlHmc45BLifFs+m2JTJZ4Mw4KqhsaaF5HzK84wyP+liykJQt/P+BJT69G/M+ORIWSmYu5iFeumHMk1R7tF+HregJlsS9ciVkos1d8K6AdpGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784886597; c=relaxed/simple; bh=FIoI34exXMWXi2BXg8YS9G6nrSeG6foZcfBsa8GyokU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f5msUzi4pzjSfBRY68jZnkfTU8F3zJUj5rYScrQwPTruu7pMrfNL/6Rq5gyoS7X0+NQrVLfRbGtfWv0MLuVXQ6eS2FmwyOVMmBHLVT/ykotZQeek775ZPN6rt8mSqVoaKdLSZ3DGjkXakGBYP3Y0Q9Ne1wlssEp7Wz8PwW3ye14= 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=XVeBdVp0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GnT3mVNF; 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="XVeBdVp0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GnT3mVNF" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O9T0rN3785870 for ; Fri, 24 Jul 2026 09:49:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=pSw6yqSgPEi F+OlTlwbrF8Jc4C48hR229uxsm1NP2ts=; b=XVeBdVp0gYVFyE90yx4iH8zHcF0 SBbb9a3EOPfm9/dFQ62O1GuvyQyRy7mzyO619sjLWmybDdDFvSTCqoiCH+hgIIjI PwjdvQV4DkcmzuTIIUd6OtCEld1cnjxXyrvNgCAL0M9HYUYfVK5r8chenCRMJarG lkrILCySR99Cj+9w1UOnrrgOq+EIxwHQd2uvI6nBYrLbk5Mfepvs33CivIp/laUb sxsJhy3d8MC4lWZ7+kYTwl9+Ad9+7V5AoZ8HEF9bOTopwZWfFf3RhMJyp1lUNx+i lNSzP3B7lXOjLWDr5LyhhZGIyDoysRm+dpcnukP0wl3rMtqijlNQlguI6CA== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm5f682hb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 09:49:55 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-84859a64079so378019b3a.3 for ; Fri, 24 Jul 2026 02:49:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784886595; x=1785491395; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=pSw6yqSgPEiF+OlTlwbrF8Jc4C48hR229uxsm1NP2ts=; b=GnT3mVNFhfCIE1zeNZq1Z2buR4x0RZKXlrrDvekDOr/8NWzUogU7rbsR4xSRSBnvZw Mxpf2z+ZNF6yBaobfRUSE1QRduKYA6ZHIKHP7SAccF9d2HYLTDjfhCHu8hIex71LTb+x k2S6v8VZuVXTighja3OAEMVodotbEjazUtQyfgDx8yGEd0ttyM/VldlVwdjbprRgsvFC G8xQ00I4rBAOWYVxBlrbQ3YD4NUsW0rhU+TPRMbigj3urMpNwAQV/XXLO0rG7BSKjllk NYaD2889AW+0GDUeGRSEh6B9x5OZphvQe+GeOmYGJl9w8QztEXLAwLwdq9EQoNogE7U4 6zMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784886595; x=1785491395; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=pSw6yqSgPEiF+OlTlwbrF8Jc4C48hR229uxsm1NP2ts=; b=SlB02lnN8gsTUHG3y9wWx1pa4R+toxldU8UDdcIsNzPKqpdjVJ+cijh8zCcdq5LlMP pyuVmLCvgiSod+9yfPRphSqESN368icSPUUuXBPakI2Vp7KspTkPNWVN6efA7aZsmX4N o2AddCXIiBErjKpoKNF2G6Q/o1S7rLBkcwMJ5NwcOupveguyvot8ka9V3b0gOE3CMnJa taOorp8fi6Cr9QFEaIN9Zom2wKzr5pngm3TC2pQxGUAA1vDQZV9sYEA4sSzGmihOn1tn SMk5iZ/KMiJ3ephOizYTfjBykHqPkxXkEfQnlyXKvHiajaN+NipEWfkz9IBzlW5ZIA4u qrlQ== X-Forwarded-Encrypted: i=1; AHgh+RoHH+Ln/8nw6cik4w+clpYxfTJN4F3gbwnbdV3O99ZjGKulW80u60oE6qY/1j1w83DQ56p2O3PD4+SH6eI=@vger.kernel.org X-Gm-Message-State: AOJu0YytEy0eiXK20VvM5hcLqfkYvv1AvkcqQehWx1TvoIBPsHYhnCQZ a55HkgIesctMJ6mxKwTO9bIVvF7vmyvJlmZulBZateaqjg7Rj064lc6y89CFeCV/GY9nfJWmmLO 1OfY5YbDJXY8zeJZjKIRYtto8EOg8tumxgZIlyU/DQGU+A2NC8mWKBysFRyJCp33pKSU= X-Gm-Gg: AR+sD13P86a1Jkm+yNp7zl6PzZAa13TGIMzodATjoYu3Yvov19J2e8PUYfKdjTMDWqN DBUp4EASNVy5vXgPRgjBbkyCVdGiWsqnnqkxVal3ANXsO6YWEgDCBXcKKXNGFr9miXrsEPT7Bb1 COurLIQRIOZiXbnvwzZr/sjWRbwkbu0l+x4LNFatK083ariSp6QXSXsK8iOmZ14z3jpJ1/1j1W7 huW0AyqFNfE4ZUdAZ9TB/V7RPi1/ZAe6fjKpAV4sZds0CuSnK+MVggV0y/7Ga+LSxd/Xi+b8nSl BO863H9Xha2YmN9ZfW7oZbOdU/xcHNiCz51NMlEGP5dYragZW2TBVkjd/W5E8QpImaympSwKdy9 BIOIFUvHnWqexkKDkLOAeW1htK1U= X-Received: by 2002:a05:6a00:180b:b0:837:e9cc:d474 with SMTP id d2e1a72fcca58-84e2bbece5bmr7258319b3a.2.1784886594800; Fri, 24 Jul 2026 02:49:54 -0700 (PDT) X-Received: by 2002:a05:6a00:180b:b0:837:e9cc:d474 with SMTP id d2e1a72fcca58-84e2bbece5bmr7258289b3a.2.1784886594251; Fri, 24 Jul 2026 02:49:54 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbb8f1a8a7csm3961013a12.24.2026.07.24.02.49.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 02:49:54 -0700 (PDT) From: Mukesh Ojha To: Bjorn Andersson , Konrad Dybcio , Bartosz Golaszewski , Guru Das Srinagesh , Sibi Sankar , Elliot Berman , Andrew Halaney Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha , Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v4 2/3] firmware: qcom: scm: Fix reserved memory cleanup on probe failure Date: Fri, 24 Jul 2026 15:19:38 +0530 Message-ID: <20260724094939.613844-3-mukesh.ojha@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724094939.613844-1-mukesh.ojha@oss.qualcomm.com> References: <20260724094939.613844-1-mukesh.ojha@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA4OSBTYWx0ZWRfX2ozVKbpqFSXu pbQp63i6c2eLu+3RLhJqlMBFNmxJfjEOs0lpGR/bFVeYxmrjm53aeTGrkajWRmbF5TZgWl8zwvt SfKQtu+pAHaGJjzTA66dv95cqiH+45M= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA4OSBTYWx0ZWRfX/qe87/6YBupa rmbaxtm3P6LkUqY1XwzX8jrd+9zIHsJXswcguLZk5f4XOkm7yc7V91ilt3e/u5mn3aiXyskti8a dNKqtA8O1qG6LxmL3830GWjxsh1Wye89sR63Yf3frrTFt2gxss4itCWZhuMSOCBrbzaBuXOuKqe MlGZnj1RPvx8FeXVERr+24CcyfptQq9vn8iHA2g8BdsOQHwab7wzFVCqHgE93J06pYllHYuwinF ZpG3tCItOzzObqXMXNLLQEqvjxR7nSY5po45axAMQC8RXYFyXqqtZH7CDON/hOit2X52y1iWt/S +YJvtj6WdqaHOEBBcO3jeXQMSp5WGSD8qoxylLrKVMB+s3NPy2CubfOi2S2N05w0ByTi2MDcE9Q YPa5NGInRO8gve1WPO7aFKGc2LlVIkNuOlEHktTfsPA13ODsVs8WObE1nTTIQDS8i01PRrM3qtV KwGCtf9pg+LcxOxwp8w== X-Proofpoint-GUID: Drrm1UZSollex_JO4kmMNMe5AYGx7LM1 X-Authority-Analysis: v=2.4 cv=BNeDalQG c=1 sm=1 tr=0 ts=6a633543 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=mag7UKMDEwzM_1C7KTIA:9 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-ORIG-GUID: Drrm1UZSollex_JO4kmMNMe5AYGx7LM1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240089 Content-Type: text/plain; charset="utf-8" of_reserved_mem_device_init() adds an entry to a global list with no devres counterpart. If qcom_scm_probe() fails after the call the assignment is never cleaned up. A probe retry would add a duplicate entry, leaking the original one permanently. Add an err_rmem label that calls of_reserved_mem_device_release() and route all error paths after of_reserved_mem_device_init() through it. of_reserved_mem_device_release() is safe to call unconditionally as it simply walks an empty list when nothing was assigned. Fixes: a33b2579c8d3 ("firmware: qcom: scm: add support for SHM bridge memor= y carveout") Reviewed-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 3b271948d326..9db55240609c 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -2849,9 +2849,11 @@ static int qcom_scm_probe(struct platform_device *pd= ev) "Failed to setup the reserved memory region for TZ mem\n"); =20 ret =3D qcom_tzmem_enable(scm->dev); - if (ret) - return dev_err_probe(scm->dev, ret, - "Failed to enable the TrustZone memory allocator\n"); + if (ret) { + ret =3D dev_err_probe(scm->dev, ret, + "Failed to enable the TrustZone memory allocator\n"); + goto err_rmem; + } =20 memset(&pool_config, 0, sizeof(pool_config)); pool_config.initial_size =3D 0; @@ -2859,9 +2861,11 @@ static int qcom_scm_probe(struct platform_device *pd= ev) pool_config.max_size =3D SZ_256K; =20 scm->mempool =3D devm_qcom_tzmem_pool_new(scm->dev, &pool_config); - if (IS_ERR(scm->mempool)) - return dev_err_probe(scm->dev, PTR_ERR(scm->mempool), - "Failed to create the SCM memory pool\n"); + if (IS_ERR(scm->mempool)) { + ret =3D dev_err_probe(scm->dev, PTR_ERR(scm->mempool), + "Failed to create the SCM memory pool\n"); + goto err_rmem; + } =20 ret =3D qcom_scm_query_waitq_count(scm); scm->wq_cnt =3D ret < 0 ? QCOM_SCM_DEFAULT_WAITQ_COUNT : ret; @@ -2937,6 +2941,10 @@ static int qcom_scm_probe(struct platform_device *pd= ev) qcom_scm_gunyah_wdt_init(scm); =20 return 0; + +err_rmem: + of_reserved_mem_device_release(scm->dev); + return ret; } =20 static void qcom_scm_shutdown(struct platform_device *pdev) --=20 2.53.0 From nobody Fri Jul 24 21:53:26 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 2FF413CAA55 for ; Fri, 24 Jul 2026 09:49:59 +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=1784886601; cv=none; b=cuoy7PK4nTSYIoXzRCX9LKu/1BpmoerNjN2WfEBht6ysV/a9d4BexzGHw9G9xh2yguM2tfFVDl08cRvbYr4dO93lMJpvIQmoesqQZyPP2F2VrzMH1Nb+Lnmw2Le4oCbwz4Jz6GOp0HvYKNGqQnS8V9GCuvQqU6k/5tjhYa1dTqE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784886601; c=relaxed/simple; bh=nGzwYW9XMYjIOpU7rm2Up8e85vxgCyaRTXlm2Pc71PE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P+azYr7WOtm6ZnEYNexFmX/zgOmkvuOX3SBvWaHzZTDG/VSnwtYC+3uJdSEVUqgccjNz/CCUEPrfPn/+6eROUTaLmQYnYz/luVKkhj6nTCiA+4qy7uqX9sOIyk5IvEkkSjw28qyqNb16KIrr/smZXOO9RYMyobzwkNFGMAeFTbY= 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=R10iBRgt; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WamEOW46; 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="R10iBRgt"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WamEOW46" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O9T15j3785945 for ; Fri, 24 Jul 2026 09:49:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=OHVNsbMAYbj kQ1t/N6D0ZmoMvxe2Y1h1gCTZ8ANDnOQ=; b=R10iBRgtIHc5k431AFgF6aMc4Tu 5pAOCkmCCoZYMHRpaCU1vLZoL4R2R5U/rjNeOxetx4TniDFvN7JNbhXmjYtplNN8 6Xsjzm8365DE90A/nzEFBC5g3HL1T2Me5uUGW4VdZhBKWG1YNmolNh7mJdtcfBNZ P0HzeUr5/tbOAyaDbHKXvmfzQU7IFpX1rBONmhA0gG4LrdZ2lNFh1s6UJaP9Wmoj D5Y6kizXa1kSkA7yZmT/0G0LWWYZpD8sMGuQgQqXzFcss0czdzhg4ag+64U9FjTk e/1iGsvjYCiVytsaY1mhz0ZANjElBn1tCaFL8YptZUeiBgJMoe9NkpoCf8w== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm5f682hj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 09:49:59 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-8485d853b08so535310b3a.1 for ; Fri, 24 Jul 2026 02:49:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784886599; x=1785491399; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OHVNsbMAYbjkQ1t/N6D0ZmoMvxe2Y1h1gCTZ8ANDnOQ=; b=WamEOW46QIGsClLra4MVvYqNf0fOnis2wA5WVVAkWcVREr1ThAzcy6J/UH3Xf1Vusu Roa4D7bGCsR3CPUa7oMqi70sXCzZU9ahV+sfqyfwkrhwrPPhKfEOWGhJfZdMh6JVpQMW 4PaEuN7GS2EhWvZS1rHxSwCAf57Iv6S33c/VLBGlNfd8XACwcltvG3uHfmgftcjzb9Y1 25KMj12wIaXIx5UQ9ji1ZiTm4U42QqL7q+YTtz9XcTtlBztYF+8nRmlKD1uNSvYSNLn5 8qj0QCblO/aJL7NYyMJs6rAXaHYLfN/CeffeOC+3i6OxueB2tivW9grmaRZfshQmhP5+ XdaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784886599; x=1785491399; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OHVNsbMAYbjkQ1t/N6D0ZmoMvxe2Y1h1gCTZ8ANDnOQ=; b=maAu+B6b4PavHaUEAbJZr6WdT3cRmmcY/EAEe7xW+P9JbYPR+JhTTNmAGDO79Htxmv DHdeeXNCuKbAat9D1iRKRkQnR30XgPwfFfGtZCBB3wocHwwcr7wEhvJkl0vqcpRvrF2a ewl89fTntoHrxT8uBTt9nWc+S4PxP9148hvCJ34mwD4GPZ593LKYG9KLloyvT1PUlps8 QIRpeaU8PWteqz8KBIT+rynT0HNtOMaq41cswUe6Ynm47eg25XCm+NCnt7Cq9PYg4dIq ds0YJaURmDyxyxeer4jcM7tu9mWofMnS1e5CZJM7Xcqok2i0UdC03v+vSl0xkTRpzmiI deLw== X-Forwarded-Encrypted: i=1; AHgh+RozWOgLgKDXp2+wNCHwWdIbqE5DBL1vFlkv9Lz+WOcviiPlsMmbPWRIrlhei1PztE+G39QjFvyHHWUccyU=@vger.kernel.org X-Gm-Message-State: AOJu0YzRbeL2u6JgehH/wE5n+A1QXbxMke+c8MZVcs5Br99uSB5h6fJ5 DVrfCluJQY4whvrzH6emD/nVbOZQOwqjq53urE8ij0Q9C6VXEreQ2ULVVfBw7UO1s3xFh7vP3wv u1261AdBdEPNJPElnYBcWJ3kD1Mz++qlLlYbrYRVgHw0t6feZ9ZFnqEJxrkvobHTMNek= X-Gm-Gg: AR+sD12x2+HctrAL4C7vQwVXpowNTUrPOxihA764pSIw0odn1hjYs2Xw9+HajHHS4VN 1eogJ0jHSoTwwd+oRHWMN5mIni/ilSPa2/fQU3ZNSvQCRxYMdcS+AYWZAYA33r9bV65ipxntyMr xP7RcTxJTRcspirkQJhXR3KpaWqj2FIl2lRIEIu+v4SzjLLHkUcgEiRmHbb+IWJDVw4VmQNEccl 6k+XEbESS37VG2f0+Ts+LGRjc1rkg3wX19dCcIsgmTQfnL977xJckDz2C+7jtfolAyFMf/iW/I9 jhaqitwLRHzqMB2wELUGmiEYO/I2yFziLmoJOxfxYPfsuShQfuCPStS4Jyt4FGjeyPl1bIY0U2e kPPxXjRzo/IppqRxTLhJ6fxkAk4w= X-Received: by 2002:a05:6a20:1449:b0:3c3:7ac4:dac7 with SMTP id adf61e73a8af0-3c44b190aa1mr7584977637.45.1784886598629; Fri, 24 Jul 2026 02:49:58 -0700 (PDT) X-Received: by 2002:a05:6a20:1449:b0:3c3:7ac4:dac7 with SMTP id adf61e73a8af0-3c44b190aa1mr7584933637.45.1784886598176; Fri, 24 Jul 2026 02:49:58 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbb8f1a8a7csm3961013a12.24.2026.07.24.02.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 02:49:57 -0700 (PDT) From: Mukesh Ojha To: Bjorn Andersson , Konrad Dybcio , Bartosz Golaszewski , Guru Das Srinagesh , Sibi Sankar , Elliot Berman , Andrew Halaney Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha , Bartosz Golaszewski , Konrad Dybcio Subject: [PATCH v4 3/3] firmware: qcom: scm: Fix tzmem state on probe retry Date: Fri, 24 Jul 2026 15:19:39 +0530 Message-ID: <20260724094939.613844-4-mukesh.ojha@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724094939.613844-1-mukesh.ojha@oss.qualcomm.com> References: <20260724094939.613844-1-mukesh.ojha@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA4OSBTYWx0ZWRfX7LSQMuU/jH4L HP4JYuaAWJex6d51LqNaLqGbkwaWOrdarICEfvZ7Zrvq/Tw4BeIfZ1LSegieDORZsf4O2QJCw8W w/7CqdHvl3A9PwugfTfcMUa7kY/+84U= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA4OSBTYWx0ZWRfX1+UrnYLEoWL8 QzNYs4Qr1J8OhSeLKJcGKmNckiDwXzYGr8Kpm57grkTbq2/9mbND1meQ/ODKLV8M+crGcCUIasZ NN2wvG2tZu3Xf436htICNB3nXYwujONu5gLB5ilpzorkjxENp4mWOO540LzFuoWEPHHrLutT+NE v6igQdY7vU/lRaziVLxaWTgqFWkeIsDhKb3n1M57dGobF3P4qh5j5NpHX9aTzGiliSaoJd/Dp3s OjHpetw2MmcaEsEH98kiPOjjNXDhuKDTrDhlqn+a5iozAc8AAoaVNwXqZMyfDOI+60FL/kRZBe9 sLIlYsYCYsKb5yWY7/DH/ZDkeE4z8fDXox9xdzHutRFVEtW9mF4uN2JCdvdRY1nAIqHy9ZYN1qO m9+eKLgqPjA5yIbVloi5oStH9W82GCP9NVOtMKV/xVCi6cCQCxx2bCP4bJIG9ghKpkbCHPky2TM 7OTrFmL3kZU7C/GPkkg== X-Proofpoint-GUID: 3HNuWJRSxUi0P49g7PKKz-g-WNXdj7Ob X-Authority-Analysis: v=2.4 cv=BNeDalQG c=1 sm=1 tr=0 ts=6a633547 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=Wn-X5jRZ7-pqfG1RE4UA:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-ORIG-GUID: 3HNuWJRSxUi0P49g7PKKz-g-WNXdj7Ob X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240089 Content-Type: text/plain; charset="utf-8" qcom_tzmem_enable() returns -EBUSY if called a second time, but this causes probe retries to fail permanently if a later step in qcom_scm_probe() defers after qcom_tzmem_enable() has already succeeded. Use DO_ONCE() to ensure qcom_tzmem_init() runs exactly once across all calls in a thread-safe manner. qcom_tzmem_dev is set on every call since probe retries use the same device pointer. The result of the first initialisation is cached and returned to every subsequent caller. Fixes: 40289e35ca52 ("firmware: qcom: scm: enable the TZ mem allocator") Reviewed-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_tzmem.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/qcom/qcom_tzmem.c b/drivers/firmware/qcom/qco= m_tzmem.c index 0635cbeacfc8..0fd9581275f1 100644 --- a/drivers/firmware/qcom/qcom_tzmem.c +++ b/drivers/firmware/qcom/qcom_tzmem.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -507,14 +508,18 @@ phys_addr_t qcom_tzmem_to_phys(void *vaddr) } EXPORT_SYMBOL_GPL(qcom_tzmem_to_phys); =20 +static void qcom_tzmem_do_init(int *result) +{ + *result =3D qcom_tzmem_init(); +} + int qcom_tzmem_enable(struct device *dev) { - if (qcom_tzmem_dev) - return -EBUSY; + static int result; =20 qcom_tzmem_dev =3D dev; - - return qcom_tzmem_init(); + DO_ONCE(qcom_tzmem_do_init, &result); + return result; } EXPORT_SYMBOL_GPL(qcom_tzmem_enable); =20 --=20 2.53.0