Message ID | 20230826012415.1126955-1-liaochang1@huawei.com |
---|---|
State | New |
Headers | show |
Series | cpufreq: governor: Free dbs_data directly when gov->init() fails | expand |
Hi Viresh. 在 2023/8/28 14:56, Viresh Kumar 写道: > On 26-08-23, 01:24, Liao Chang wrote: >> Due to the kobject embedded in the dbs_data doest not has a release() >> method yet, it needs to use kfree() to free dbs_data directly when >> governor fails to allocate the tunner field of dbs_data. >> >> Signed-off-by: Liao Chang <liaochang1@huawei.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 85da677c43d6..6e1ac864e87e 100644 >> --- a/drivers/cpufreq/cpufreq_governor.c >> +++ b/drivers/cpufreq/cpufreq_governor.c >> @@ -438,8 +438,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; >> + } > > What about this instead ? > > diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c > index 85da677c43d6..af44ee6a6430 100644 > --- a/drivers/cpufreq/cpufreq_governor.c > +++ b/drivers/cpufreq/cpufreq_governor.c > @@ -439,7 +439,7 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy) > > ret = gov->init(dbs_data); > if (ret) > - goto free_policy_dbs_info; > + goto free_dbs_data; > > /* > * The sampling interval should not be less than the transition latency > @@ -474,6 +474,8 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy) > if (!have_governor_per_policy()) > gov->gdbs_data = NULL; > gov->exit(dbs_data); > + > +free_dbs_data: > kfree(dbs_data); Sure, less copy-and-paste code is better :) Do you mind I copy above code in next revision? Thanks. > > free_policy_dbs_info: >
diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c index 85da677c43d6..6e1ac864e87e 100644 --- a/drivers/cpufreq/cpufreq_governor.c +++ b/drivers/cpufreq/cpufreq_governor.c @@ -438,8 +438,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; + } /* * The sampling interval should not be less than the transition latency
Due to the kobject embedded in the dbs_data doest not has a release() method yet, it needs to use kfree() to free dbs_data directly when governor fails to allocate the tunner field of dbs_data. Signed-off-by: Liao Chang <liaochang1@huawei.com> --- drivers/cpufreq/cpufreq_governor.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)