From e5c82d7b7ceb4b780309724b7299b81b84af4f50 Mon Sep 17 00:00:00 2001 From: Santosh Mardi Date: Mon, 26 Apr 2021 19:22:12 +0530 Subject: [PATCH] drivers: soc: qcom: rimps_memlat: add NULL check for SCMI handle SCMI handle will remain NULL in case of SCMI failures during initialization. Update all store functions to check for NULL before accessing vendor ops structure. Change-Id: Ied56f62785579078fb06fb526e29aaef9d45e00d Signed-off-by: Santosh Mardi --- drivers/soc/qcom/rimps_memlat.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/soc/qcom/rimps_memlat.c b/drivers/soc/qcom/rimps_memlat.c index e38e28db3c57..c83a16f5ea32 100644 --- a/drivers/soc/qcom/rimps_memlat.c +++ b/drivers/soc/qcom/rimps_memlat.c @@ -207,7 +207,12 @@ static ssize_t store_##name(struct kobject *kobj, \ unsigned int val; \ struct memlat_mon *mon = to_memlat_mon(kobj); \ struct memlat_cpu_grp *cpu_grp = mon->cpu_grp; \ - struct scmi_memlat_vendor_ops *ops = cpu_grp->handle->memlat_ops; \ + struct scmi_memlat_vendor_ops *ops = NULL; \ + if (cpu_grp && cpu_grp->handle && \ + cpu_grp->handle->memlat_ops) \ + ops = cpu_grp->handle->memlat_ops; \ + else \ + return -ENODEV; \ ret = kstrtouint(buf, 10, &val); \ if (ret < 0) \ return ret; \ @@ -248,11 +253,14 @@ static ssize_t store_min_freq(struct kobject *kobj, unsigned int val; struct memlat_mon *mon = to_memlat_mon(kobj); struct memlat_cpu_grp *cpu_grp = mon->cpu_grp; - struct scmi_memlat_vendor_ops *ops = cpu_grp->handle->memlat_ops; + struct scmi_memlat_vendor_ops *ops = NULL; unsigned int min_freq; unsigned int max_freq; - if (!ops) + if (cpu_grp && cpu_grp->handle && + cpu_grp->handle->memlat_ops) + ops = cpu_grp->handle->memlat_ops; + else return -ENODEV; if (mon->mon_type == L3_MEMLAT) { @@ -290,11 +298,14 @@ static ssize_t store_max_freq(struct kobject *kobj, unsigned int val; struct memlat_mon *mon = to_memlat_mon(kobj); struct memlat_cpu_grp *cpu_grp = mon->cpu_grp; - struct scmi_memlat_vendor_ops *ops = cpu_grp->handle->memlat_ops; + struct scmi_memlat_vendor_ops *ops = NULL; unsigned int min_freq; unsigned int max_freq; - if (!ops) + if (cpu_grp && cpu_grp->handle && + cpu_grp->handle->memlat_ops) + ops = cpu_grp->handle->memlat_ops; + else return -ENODEV; if (mon->mon_type == L3_MEMLAT) {