From cceceac1d86ffa7e68cefd95ca639afcd7c755d2 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Sun, 3 Jan 2021 02:41:53 +0530 Subject: [PATCH] firmware: qcom_scm: Check for NULL before dereferencing __scm The function qcom_scm_mem_protect_region_id dereferences __scm without checking for NULL and could potentially lead to a NULL pointer exception. This scenario can happen if the clinet calls qcom_scm_mem_protect_region_id before qcom_scm driver is even probed. Hence, check for NULL before dereferencing it. Change-Id: I1a9eba6d45ba8ebf73da80bca984b4dfad05042e Signed-off-by: Ashok Vuyyuru --- drivers/firmware/qcom_scm-smc.c | 2 +- drivers/firmware/qcom_scm.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/qcom_scm-smc.c b/drivers/firmware/qcom_scm-smc.c index 3f8b1369fce7..6140b04f079d 100644 --- a/drivers/firmware/qcom_scm-smc.c +++ b/drivers/firmware/qcom_scm-smc.c @@ -1207,7 +1207,7 @@ int __qcom_scm_mem_protect_region_id(struct device *dev, phys_addr_t paddr, desc.args[0] = paddr; desc.args[1] = size; - desc.arginfo = QCOM_SCM_ARGS(2); + desc.arginfo = QCOM_SCM_ARGS(2, QCOM_SCM_RO, QCOM_SCM_VAL); ret = qcom_scm_call(dev, &desc); diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c index 349fb56dea2c..48323ddfff3d 100644 --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c @@ -452,7 +452,8 @@ EXPORT_SYMBOL(qcom_scm_mem_protect_video); int qcom_scm_mem_protect_region_id(phys_addr_t paddr, size_t size) { - return __qcom_scm_mem_protect_region_id(__scm->dev, paddr, size); + return __qcom_scm_mem_protect_region_id(__scm ? __scm->dev : NULL, + paddr, size); } EXPORT_SYMBOL(qcom_scm_mem_protect_region_id);