On 09-10-19, 18:26, Navid Emamdoost wrote: > In the implementation of cpufreq_dbs_governor_init(), dbs_data is > allocated and later is assigned to governor_data. But before that > assignment, if gov->init() fails this allocation is not released. > dbs_data should be released in case if gov->init() failure. > > Fixes: 714a2d9c8792 ("cpufreq: governor: split cpufreq_governor_dbs()") > Signed-off-by: Navid Emamdoost <navid.emamdo...@gmail.com> > --- > drivers/cpufreq/cpufreq_governor.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/cpufreq/cpufreq_governor.c > b/drivers/cpufreq/cpufreq_governor.c > index 4bb054d0cb43..deb099d36266 100644 > --- a/drivers/cpufreq/cpufreq_governor.c > +++ b/drivers/cpufreq/cpufreq_governor.c > @@ -428,8 +428,10 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy > *policy) > gov_attr_set_init(&dbs_data->attr_set, &policy_dbs->list); > > ret = gov->init(dbs_data); > - if (ret) > + if (ret) { > + kfree(dbs_data); > goto free_policy_dbs_info;
Maybe add another label right before kfree() at the bottom and jump there instead. We wanted to share code in the error path. > + } > > /* > * The sampling interval should not be less than the transition latency > -- > 2.17.1 -- viresh