* [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
@ 2015-08-20 16:14 Vaishali Thakkar
2015-08-20 16:17 ` Viresh Kumar
2015-08-26 12:47 ` Javi Merino
0 siblings, 2 replies; 8+ messages in thread
From: Vaishali Thakkar @ 2015-08-20 16:14 UTC (permalink / raw)
To: Zhang Rui; +Cc: Eduardo Valentin, linux-pm, linux-kernel, Viresh Kumar
In the function cpufreq_get_requested_power, the memory allocated
for load_cpu is live within the function only. And after the
allocation it is immediately freed with devm_kfree. There is no
need to allocate memory for load_cpu with devm function so replace
devm_kcalloc with kcalloc and devm_kfree with kfree.
Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
---
Changes since v1:
- Introduce new label based on Viresh Kumar's suggestion
---
drivers/thermal/cpu_cooling.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c
index 620dcd4..7027923 100644
--- a/drivers/thermal/cpu_cooling.c
+++ b/drivers/thermal/cpu_cooling.c
@@ -584,8 +584,7 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
if (trace_thermal_power_cpu_get_power_enabled()) {
u32 ncpus = cpumask_weight(&cpufreq_device->allowed_cpus);
- load_cpu = devm_kcalloc(&cdev->device, ncpus, sizeof(*load_cpu),
- GFP_KERNEL);
+ load_cpu = kcalloc(ncpus, sizeof(*load_cpu), GFP_KERNEL);
}
for_each_cpu(cpu, &cpufreq_device->allowed_cpus) {
@@ -607,22 +606,21 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
dynamic_power = get_dynamic_power(cpufreq_device, freq);
ret = get_static_power(cpufreq_device, tz, freq, &static_power);
- if (ret) {
- if (load_cpu)
- devm_kfree(&cdev->device, load_cpu);
- return ret;
- }
+ if (ret)
+ goto free;
- if (load_cpu) {
+ if (load_cpu)
trace_thermal_power_cpu_get_power(
&cpufreq_device->allowed_cpus,
freq, load_cpu, i, dynamic_power, static_power);
- devm_kfree(&cdev->device, load_cpu);
- }
-
*power = static_power + dynamic_power;
return 0;
+
+free:
+ kfree(load_cpu);
+
+ return ret;
}
/**
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-20 16:14 [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions Vaishali Thakkar
@ 2015-08-20 16:17 ` Viresh Kumar
2015-08-26 12:47 ` Javi Merino
1 sibling, 0 replies; 8+ messages in thread
From: Viresh Kumar @ 2015-08-20 16:17 UTC (permalink / raw)
To: Vaishali Thakkar; +Cc: Zhang Rui, Eduardo Valentin, linux-pm, linux-kernel
On 20-08-15, 21:44, Vaishali Thakkar wrote:
> In the function cpufreq_get_requested_power, the memory allocated
> for load_cpu is live within the function only. And after the
> allocation it is immediately freed with devm_kfree. There is no
> need to allocate memory for load_cpu with devm function so replace
> devm_kcalloc with kcalloc and devm_kfree with kfree.
>
> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
> ---
> Changes since v1:
> - Introduce new label based on Viresh Kumar's suggestion
> ---
> drivers/thermal/cpu_cooling.c | 20 +++++++++-----------
> 1 file changed, 9 insertions(+), 11 deletions(-)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-20 16:14 [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions Vaishali Thakkar
2015-08-20 16:17 ` Viresh Kumar
@ 2015-08-26 12:47 ` Javi Merino
2015-08-26 12:51 ` Viresh Kumar
1 sibling, 1 reply; 8+ messages in thread
From: Javi Merino @ 2015-08-26 12:47 UTC (permalink / raw)
To: Vaishali Thakkar
Cc: Zhang Rui, Eduardo Valentin, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org, Viresh Kumar
I missed this because I wasn't CCed :( Thankfully, I'll be in
MAINTAINERS for this soon.
On Thu, Aug 20, 2015 at 05:14:02PM +0100, Vaishali Thakkar wrote:
> In the function cpufreq_get_requested_power, the memory allocated
> for load_cpu is live within the function only. And after the
> allocation it is immediately freed with devm_kfree. There is no
> need to allocate memory for load_cpu with devm function so replace
> devm_kcalloc with kcalloc and devm_kfree with kfree.
>
> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
> ---
> Changes since v1:
> - Introduce new label based on Viresh Kumar's suggestion
> ---
> drivers/thermal/cpu_cooling.c | 20 +++++++++-----------
> 1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c
> index 620dcd4..7027923 100644
> --- a/drivers/thermal/cpu_cooling.c
> +++ b/drivers/thermal/cpu_cooling.c
> @@ -584,8 +584,7 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
> if (trace_thermal_power_cpu_get_power_enabled()) {
> u32 ncpus = cpumask_weight(&cpufreq_device->allowed_cpus);
>
> - load_cpu = devm_kcalloc(&cdev->device, ncpus, sizeof(*load_cpu),
> - GFP_KERNEL);
> + load_cpu = kcalloc(ncpus, sizeof(*load_cpu), GFP_KERNEL);
> }
>
> for_each_cpu(cpu, &cpufreq_device->allowed_cpus) {
> @@ -607,22 +606,21 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
>
> dynamic_power = get_dynamic_power(cpufreq_device, freq);
> ret = get_static_power(cpufreq_device, tz, freq, &static_power);
> - if (ret) {
> - if (load_cpu)
> - devm_kfree(&cdev->device, load_cpu);
> - return ret;
> - }
> + if (ret)
> + goto free;
>
> - if (load_cpu) {
> + if (load_cpu)
> trace_thermal_power_cpu_get_power(
> &cpufreq_device->allowed_cpus,
> freq, load_cpu, i, dynamic_power, static_power);
>
> - devm_kfree(&cdev->device, load_cpu);
This introduces a memory leak. Keep the kfree() here, you can't drop
it. Cheers,
Javi
> - }
> -
> *power = static_power + dynamic_power;
> return 0;
> +
> +free:
> + kfree(load_cpu);
> +
> + return ret;
> }
>
> /**
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-26 12:47 ` Javi Merino
@ 2015-08-26 12:51 ` Viresh Kumar
2015-08-26 13:09 ` Javi Merino
0 siblings, 1 reply; 8+ messages in thread
From: Viresh Kumar @ 2015-08-26 12:51 UTC (permalink / raw)
To: Javi Merino
Cc: Vaishali Thakkar, Zhang Rui, Eduardo Valentin,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
On 26-08-15, 13:47, Javi Merino wrote:
> I missed this because I wasn't CCed :( Thankfully, I'll be in
> MAINTAINERS for this soon.
Yeah, I need to resend that patch soon :)
> > - devm_kfree(&cdev->device, load_cpu);
>
> This introduces a memory leak. Keep the kfree() here, you can't drop
> it. Cheers,
> Javi
>
> > - }
> > -
> > *power = static_power + dynamic_power;
> > return 0;
> > +
> > +free:
> > + kfree(load_cpu);
Wouldn't this make that work ?
--
viresh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-26 12:51 ` Viresh Kumar
@ 2015-08-26 13:09 ` Javi Merino
2015-08-26 13:14 ` Viresh Kumar
0 siblings, 1 reply; 8+ messages in thread
From: Javi Merino @ 2015-08-26 13:09 UTC (permalink / raw)
To: Viresh Kumar
Cc: Vaishali Thakkar, Zhang Rui, Eduardo Valentin,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
On Wed, Aug 26, 2015 at 01:51:58PM +0100, Viresh Kumar wrote:
> On 26-08-15, 13:47, Javi Merino wrote:
> > I missed this because I wasn't CCed :( Thankfully, I'll be in
> > MAINTAINERS for this soon.
>
> Yeah, I need to resend that patch soon :)
>
> > > - devm_kfree(&cdev->device, load_cpu);
> >
> > This introduces a memory leak. Keep the kfree() here, you can't drop
> > it. Cheers,
> > Javi
> >
> > > - }
> > > -
> > > *power = static_power + dynamic_power;
> > > return 0;
> > > +
> > > +free:
> > > + kfree(load_cpu);
>
> Wouldn't this make that work ?
Nope, you're not reaching that code path from there. Removing the
"return 0" would work, but I don't like it, since we would be calling
kfree() all the time, even when the trace is not enabled. I'd rather
leave the kfree() where it is.
Cheers,
Javi
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-26 13:09 ` Javi Merino
@ 2015-08-26 13:14 ` Viresh Kumar
2015-08-27 1:31 ` Vaishali Thakkar
0 siblings, 1 reply; 8+ messages in thread
From: Viresh Kumar @ 2015-08-26 13:14 UTC (permalink / raw)
To: Javi Merino
Cc: Vaishali Thakkar, Zhang Rui, Eduardo Valentin,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
On 26-08-15, 14:09, Javi Merino wrote:
> On Wed, Aug 26, 2015 at 01:51:58PM +0100, Viresh Kumar wrote:
> > On 26-08-15, 13:47, Javi Merino wrote:
> > > I missed this because I wasn't CCed :( Thankfully, I'll be in
> > > MAINTAINERS for this soon.
> >
> > Yeah, I need to resend that patch soon :)
> >
> > > > - devm_kfree(&cdev->device, load_cpu);
> > >
> > > This introduces a memory leak. Keep the kfree() here, you can't drop
> > > it. Cheers,
> > > Javi
> > >
> > > > - }
> > > > -
> > > > *power = static_power + dynamic_power;
> > > > return 0;
So, the change I suggested on V1 removed this as well :) and Vaishali
missed it completely.
> > > > +
> > > > +free:
> > > > + kfree(load_cpu);
> >
> > Wouldn't this make that work ?
>
> Nope, you're not reaching that code path from there. Removing the
> "return 0" would work, but I don't like it, since we would be calling
> kfree() all the time, even when the trace is not enabled. I'd rather
> leave the kfree() where it is.
Hmm..
--
viresh
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-26 13:14 ` Viresh Kumar
@ 2015-08-27 1:31 ` Vaishali Thakkar
2015-08-27 9:00 ` Javi Merino
0 siblings, 1 reply; 8+ messages in thread
From: Vaishali Thakkar @ 2015-08-27 1:31 UTC (permalink / raw)
To: Viresh Kumar
Cc: Javi Merino, Zhang Rui, Eduardo Valentin,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
On Wed, Aug 26, 2015 at 6:44 PM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 26-08-15, 14:09, Javi Merino wrote:
>> On Wed, Aug 26, 2015 at 01:51:58PM +0100, Viresh Kumar wrote:
>> > On 26-08-15, 13:47, Javi Merino wrote:
>> > > I missed this because I wasn't CCed :( Thankfully, I'll be in
>> > > MAINTAINERS for this soon.
>> >
>> > Yeah, I need to resend that patch soon :)
>> >
>> > > > - devm_kfree(&cdev->device, load_cpu);
>> > >
>> > > This introduces a memory leak. Keep the kfree() here, you can't drop
>> > > it. Cheers,
>> > > Javi
>> > >
>> > > > - }
>> > > > -
>> > > > *power = static_power + dynamic_power;
>> > > > return 0;
>
> So, the change I suggested on V1 removed this as well :) and Vaishali
> missed it completely.
Yes. I missed the point that kfree was called at 2 places previously.
Would you like me to send v3 with changes having just new label with
'goto' at both of these places or you would like to apply v1 of the patch?
>> > > > +
>> > > > +free:
>> > > > + kfree(load_cpu);
>> >
>> > Wouldn't this make that work ?
>>
>> Nope, you're not reaching that code path from there. Removing the
>> "return 0" would work, but I don't like it, since we would be calling
>> kfree() all the time, even when the trace is not enabled. I'd rather
>> leave the kfree() where it is.
>
> Hmm..
>
> --
> viresh
--
Vaishali
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions
2015-08-27 1:31 ` Vaishali Thakkar
@ 2015-08-27 9:00 ` Javi Merino
0 siblings, 0 replies; 8+ messages in thread
From: Javi Merino @ 2015-08-27 9:00 UTC (permalink / raw)
To: Vaishali Thakkar
Cc: Viresh Kumar, Zhang Rui, Eduardo Valentin,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
On Thu, Aug 27, 2015 at 02:31:26AM +0100, Vaishali Thakkar wrote:
> On Wed, Aug 26, 2015 at 6:44 PM, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> > On 26-08-15, 14:09, Javi Merino wrote:
> >> On Wed, Aug 26, 2015 at 01:51:58PM +0100, Viresh Kumar wrote:
> >> > On 26-08-15, 13:47, Javi Merino wrote:
> >> > > I missed this because I wasn't CCed :( Thankfully, I'll be in
> >> > > MAINTAINERS for this soon.
> >> >
> >> > Yeah, I need to resend that patch soon :)
> >> >
> >> > > > - devm_kfree(&cdev->device, load_cpu);
> >> > >
> >> > > This introduces a memory leak. Keep the kfree() here, you can't drop
> >> > > it. Cheers,
> >> > > Javi
> >> > >
> >> > > > - }
> >> > > > -
> >> > > > *power = static_power + dynamic_power;
> >> > > > return 0;
> >
> > So, the change I suggested on V1 removed this as well :) and Vaishali
> > missed it completely.
>
> Yes. I missed the point that kfree was called at 2 places previously.
> Would you like me to send v3 with changes having just new label with
> 'goto' at both of these places or you would like to apply v1 of the patch?
I vote for v1. I've acked it.
Cheers,
Javi
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-08-27 9:00 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-20 16:14 [PATCH v2] thermal: cpu_cooling: Remove usage of devm functions Vaishali Thakkar
2015-08-20 16:17 ` Viresh Kumar
2015-08-26 12:47 ` Javi Merino
2015-08-26 12:51 ` Viresh Kumar
2015-08-26 13:09 ` Javi Merino
2015-08-26 13:14 ` Viresh Kumar
2015-08-27 1:31 ` Vaishali Thakkar
2015-08-27 9:00 ` Javi Merino
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).