diff options
author | Ilia Lin <ilia.lin@gmail.com> | 2018-06-17 15:58:42 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-06-19 04:35:59 -0400 |
commit | ee3dbcf963c17775417d2fdf74e60f0c1b563dda (patch) | |
tree | 369c3cf01992985d9e6d114fa13ef26f9691de6f | |
parent | ce397d215ccd07b8ae3f71db689aedb85d56ab40 (diff) |
cpufreq: kryo: Fix possible error code dereference
In event of error returned by the nvmem_cell_read() non-pointer value
may be dereferenced. Fix this with error handling.
Additionally free the allocated speedbin buffer, as per the API.
Fixes: 9ce36edd1a52 (cpufreq: Add Kryo CPU scaling driver)
Signed-off-by: Ilia Lin <ilia.lin@gmail.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r-- | drivers/cpufreq/qcom-cpufreq-kryo.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c index d049fe4b80c4..74b9b93d511b 100644 --- a/drivers/cpufreq/qcom-cpufreq-kryo.c +++ b/drivers/cpufreq/qcom-cpufreq-kryo.c | |||
@@ -115,6 +115,8 @@ static int qcom_cpufreq_kryo_probe(struct platform_device *pdev) | |||
115 | 115 | ||
116 | speedbin = nvmem_cell_read(speedbin_nvmem, &len); | 116 | speedbin = nvmem_cell_read(speedbin_nvmem, &len); |
117 | nvmem_cell_put(speedbin_nvmem); | 117 | nvmem_cell_put(speedbin_nvmem); |
118 | if (IS_ERR(speedbin)) | ||
119 | return PTR_ERR(speedbin); | ||
118 | 120 | ||
119 | switch (msm8996_version) { | 121 | switch (msm8996_version) { |
120 | case MSM8996_V3: | 122 | case MSM8996_V3: |
@@ -127,6 +129,7 @@ static int qcom_cpufreq_kryo_probe(struct platform_device *pdev) | |||
127 | BUG(); | 129 | BUG(); |
128 | break; | 130 | break; |
129 | } | 131 | } |
132 | kfree(speedbin); | ||
130 | 133 | ||
131 | for_each_possible_cpu(cpu) { | 134 | for_each_possible_cpu(cpu) { |
132 | cpu_dev = get_cpu_device(cpu); | 135 | cpu_dev = get_cpu_device(cpu); |