2024-05-14 03:18:20

by mazhida

[permalink] [raw]
Subject: [PATCH] cpufreq: amd-pstate: fix the memory to free after epp exist

From: andypma <andypma.tencent.com>

the cpudata memory from kzmalloc in epp init function is
not free after epp exist, so we should free it.

Signed-off-by: Peng Ma <[email protected]>
---
drivers/cpufreq/amd-pstate.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
index 2db095867d03..96a323f59a93 100644
--- a/drivers/cpufreq/amd-pstate.c
+++ b/drivers/cpufreq/amd-pstate.c
@@ -1425,6 +1425,9 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)

static int amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy)
{
+ struct amd_cpudata *cpudata = policy->driver_data;
+
+ kfree(cpudata);
pr_debug("CPU %d exiting\n", policy->cpu);
return 0;
}
--
2.33.0



2024-05-14 04:51:53

by Yuan, Perry

[permalink] [raw]
Subject: RE: [PATCH] cpufreq: amd-pstate: fix the memory to free after epp exist

[AMD Official Use Only - AMD Internal Distribution Only]

Hi Peng,

> -----Original Message-----
> From: [email protected] <[email protected]>
> Sent: Tuesday, May 14, 2024 11:17 AM
> To: [email protected]; [email protected]
> Cc: Peng Ma <[email protected]>; Huang, Ray <[email protected]>;
> Shenoy, Gautham Ranjal <[email protected]>; Limonciello, Mario
> <[email protected]>; Yuan, Perry <[email protected]>; linux-
> [email protected]; [email protected]
> Subject: [PATCH] cpufreq: amd-pstate: fix the memory to free after epp exist
>
> From: andypma <andypma.tencent.com>
>
> the cpudata memory from kzmalloc in epp init function is not free after epp exist,
> so we should free it.
>
> Signed-off-by: Peng Ma <[email protected]>
> ---
> drivers/cpufreq/amd-pstate.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index
> 2db095867d03..96a323f59a93 100644
> --- a/drivers/cpufreq/amd-pstate.c
> +++ b/drivers/cpufreq/amd-pstate.c
> @@ -1425,6 +1425,9 @@ static int amd_pstate_epp_cpu_init(struct
> cpufreq_policy *policy)
>
> static int amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy) {
> + struct amd_cpudata *cpudata = policy->driver_data;
> +
> + kfree(cpudata);
> pr_debug("CPU %d exiting\n", policy->cpu);
> return 0;
> }
> --
> 2.33.0

Thanks for the patch, how about change to be like below?

if (cpudata) {
kfree(cpudata);
policy->driver_data = NULL;
}

Perry.


2024-05-14 15:33:24

by mazhida

[permalink] [raw]
Subject: Re: [PATCH] cpufreq: amd-pstate: fix the memory to free after epp exist

Hi Perry,

Yes,Of course.

BR,
Peng

> 2024年5月14日 12:51,Yuan, Perry <[email protected]> 写道:
>
> [AMD Official Use Only - AMD Internal Distribution Only]
>
> Hi Peng,
>
>> -----Original Message-----
>> From: [email protected] <[email protected]>
>> Sent: Tuesday, May 14, 2024 11:17 AM
>> To: [email protected]; [email protected]
>> Cc: Peng Ma <[email protected]>; Huang, Ray <[email protected]>;
>> Shenoy, Gautham Ranjal <[email protected]>; Limonciello, Mario
>> <[email protected]>; Yuan, Perry <[email protected]>; linux-
>> [email protected]; [email protected]
>> Subject: [PATCH] cpufreq: amd-pstate: fix the memory to free after epp exist
>>
>> From: andypma <andypma.tencent.com>
>>
>> the cpudata memory from kzmalloc in epp init function is not free after epp exist,
>> so we should free it.
>>
>> Signed-off-by: Peng Ma <[email protected]>
>> ---
>> drivers/cpufreq/amd-pstate.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index
>> 2db095867d03..96a323f59a93 100644
>> --- a/drivers/cpufreq/amd-pstate.c
>> +++ b/drivers/cpufreq/amd-pstate.c
>> @@ -1425,6 +1425,9 @@ static int amd_pstate_epp_cpu_init(struct
>> cpufreq_policy *policy)
>>
>> static int amd_pstate_epp_cpu_exit(struct cpufreq_policy *policy) {
>> + struct amd_cpudata *cpudata = policy->driver_data;
>> +
>> + kfree(cpudata);
>> pr_debug("CPU %d exiting\n", policy->cpu);
>> return 0;
>> }
>> --
>> 2.33.0
>
> Thanks for the patch, how about change to be like below?
>
> if (cpudata) {
> kfree(cpudata);
> policy->driver_data = NULL;
> }
>
> Perry.
>