]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soc: qcom: smem: fix qcom_smem_is_available and check if __smem is valid
authorChristian Marangi <ansuelsmth@gmail.com>
Sat, 22 Nov 2025 18:49:56 +0000 (19:49 +0100)
committerBjorn Andersson <andersson@kernel.org>
Wed, 28 Jan 2026 15:10:53 +0000 (09:10 -0600)
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.

Update both entry to reflect new handling of __smem.

Fixes: 7a94d5f31b54 ("soc: qcom: smem: better track SMEM uninitialized state")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/all/aSAnR3ECa04CoPqp@stanley.mountain/
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251122185002.26524-1-ansuelsmth@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/soc/qcom/smem.c

index fef840b5457407a85051ded0e835430dbebfe8bb..c18a0c946f762795bebb2613b8fe922f5c81c73a 100644 (file)
@@ -396,7 +396,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);
 
@@ -1247,7 +1247,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[] = {