mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 16:37:50 +00:00
cpufreq: qcom: fix memory leak in error path
If for some reason the speedbin length is incorrect, then there is a
memory leak in the error path because we never free the speedbin buffer.
This commit fixes the error path to always free the speedbin buffer.
Cc: v5.7+ <stable@vger.kernel.org> # v5.7+
Fixes: a8811ec764
("cpufreq: qcom: Add support for krait based socs")
Signed-off-by: Fabien Parent <fabien.parent@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
This commit is contained in:
parent
1dcaf30725
commit
9f42cf5440
1 changed files with 5 additions and 2 deletions
|
@ -213,6 +213,7 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev,
|
||||||
int speed = 0, pvs = 0, pvs_ver = 0;
|
int speed = 0, pvs = 0, pvs_ver = 0;
|
||||||
u8 *speedbin;
|
u8 *speedbin;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
speedbin = nvmem_cell_read(speedbin_nvmem, &len);
|
speedbin = nvmem_cell_read(speedbin_nvmem, &len);
|
||||||
|
|
||||||
|
@ -230,7 +231,8 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(cpu_dev, "Unable to read nvmem data. Defaulting to 0!\n");
|
dev_err(cpu_dev, "Unable to read nvmem data. Defaulting to 0!\n");
|
||||||
return -ENODEV;
|
ret = -ENODEV;
|
||||||
|
goto len_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(*pvs_name, sizeof("speedXX-pvsXX-vXX"), "speed%d-pvs%d-v%d",
|
snprintf(*pvs_name, sizeof("speedXX-pvsXX-vXX"), "speed%d-pvs%d-v%d",
|
||||||
|
@ -238,8 +240,9 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev,
|
||||||
|
|
||||||
drv->versions = (1 << speed);
|
drv->versions = (1 << speed);
|
||||||
|
|
||||||
|
len_error:
|
||||||
kfree(speedbin);
|
kfree(speedbin);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct qcom_cpufreq_match_data match_data_kryo = {
|
static const struct qcom_cpufreq_match_data match_data_kryo = {
|
||||||
|
|
Loading…
Reference in a new issue