Skip to content

Commit

Permalink
cpufreq: qcom: fix memory leak in error path
Browse files Browse the repository at this point in the history
commit 9f42cf5 upstream.

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: a8811ec ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Fabo authored and gregkh committed Oct 29, 2022
1 parent e5572e6 commit b6ea267
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions drivers/cpufreq/qcom-cpufreq-nvmem.c
Expand Up @@ -213,6 +213,7 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev,
int speed = 0, pvs = 0, pvs_ver = 0;
u8 *speedbin;
size_t len;
int ret = 0;

speedbin = nvmem_cell_read(speedbin_nvmem, &len);

Expand All @@ -230,16 +231,18 @@ static int qcom_cpufreq_krait_name_version(struct device *cpu_dev,
break;
default:
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",
speed, pvs, pvs_ver);

drv->versions = (1 << speed);

len_error:
kfree(speedbin);
return 0;
return ret;
}

static const struct qcom_cpufreq_match_data match_data_kryo = {
Expand Down

0 comments on commit b6ea267

Please sign in to comment.