From: Christian Marangi <ansuelsmth@gmail.com>
To: Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Christian Marangi <ansuelsmth@gmail.com>,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Dan Carpenter <dan.carpenter@linaro.org>
Subject: [PATCH] soc: qcom: smem: fix qcom_smem_is_available and check if __smem is valid
Date: Fri, 21 Nov 2025 10:11:20 +0100 [thread overview]
Message-ID: <20251121091125.6289-1-ansuelsmth@gmail.com> (raw)
Commit 7a94d5f31b54 ("soc: qcom: smem: better track SMEM uninitialized
state") changed the usage of __smem and init now as an error pointer
instead of NULL.
qcom_smem_is_available() wasn't updated to reflect this change and also
.qcom_smem_remove doesn't reset it on module exit.
While at it also proced other expoert symbol if __smem is not set to a
correct pointer.
The changed symbol are unlikely to cause a kernel panic (as it's
expected to always check qcom_smem_is_available() before any SMEM usage)
but it's still worth to protect them by any wrong usage.
Fixes: 7a94d5f31b54 ("soc: qcom: smem: better track SMEM uninitialized state")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/soc/qcom/smem.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c
index fef840b54574..c8db29c54ddb 100644
--- a/drivers/soc/qcom/smem.c
+++ b/drivers/soc/qcom/smem.c
@@ -381,6 +381,9 @@ static struct qcom_smem *__smem = INIT_ERR_PTR(-EPROBE_DEFER);
*/
int qcom_smem_bust_hwspin_lock_by_host(unsigned int host)
{
+ if (IS_ERR(__smem))
+ return PTR_ERR(__smem);
+
/* This function is for remote procs, so ignore SMEM_HOST_APPS */
if (host == SMEM_HOST_APPS || host >= SMEM_HOST_COUNT)
return -EINVAL;
@@ -396,7 +399,7 @@ EXPORT_SYMBOL_GPL(qcom_smem_bust_hwspin_lock_by_host);
*/
bool qcom_smem_is_available(void)
{
- return !!__smem;
+ return !IS_ERR(__smem);
}
EXPORT_SYMBOL_GPL(qcom_smem_is_available);
@@ -777,6 +780,9 @@ phys_addr_t qcom_smem_virt_to_phys(void *p)
u64 offset;
u32 i;
+ if (IS_ERR(__smem))
+ return 0;
+
for (i = 0; i < SMEM_HOST_COUNT; i++) {
part = &__smem->partitions[i];
@@ -1247,7 +1253,8 @@ static void qcom_smem_remove(struct platform_device *pdev)
{
platform_device_unregister(__smem->socinfo);
- __smem = NULL;
+ /* Set to -EPROBE_DEFER to signal unprobed state */
+ __smem = ERR_PTR(-EPROBE_DEFER);
}
static const struct of_device_id qcom_smem_of_match[] = {
--
2.51.0
next reply other threads:[~2025-11-21 9:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-21 9:11 Christian Marangi [this message]
2025-11-21 13:51 ` [PATCH] soc: qcom: smem: fix qcom_smem_is_available and check if __smem is valid Konrad Dybcio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251121091125.6289-1-ansuelsmth@gmail.com \
--to=ansuelsmth@gmail.com \
--cc=andersson@kernel.org \
--cc=dan.carpenter@linaro.org \
--cc=konradybcio@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox