* [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record()
@ 2026-01-06 9:13 Zilin Guan
2026-01-06 9:13 ` [PATCH v3 2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record() Zilin Guan
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Zilin Guan @ 2026-01-06 9:13 UTC (permalink / raw)
To: hansg
Cc: ilpo.jarvinen, platform-driver-x86, linux-kernel, Zilin Guan, Jianhao Xu
The tmp buffer is allocated using kcalloc() but is not freed if
acpi_evaluate_dsm() fails. This causes a memory leak in the error path.
Fix this by explicitly freeing the tmp buffer in the error handling
path of acpi_evaluate_dsm().
Fixes: 58e82a62669d ("platform/x86/amd: Add support for AMD ACPI based Wifi band RFI mitigation feature")
Suggested-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Co-developed-by: Jianhao Xu <jianhao.xu@seu.edu.cn>
Signed-off-by: Jianhao Xu <jianhao.xu@seu.edu.cn>
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
---
Changes in v3:
- Split from v2 to separate the fix from the cleanup.
Changes in v2:
- Use scope-based cleanup helper __free() for automatic resource cleanup.
drivers/platform/x86/amd/wbrf.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/amd/wbrf.c b/drivers/platform/x86/amd/wbrf.c
index dd197b3aebe0..0f58d252b620 100644
--- a/drivers/platform/x86/amd/wbrf.c
+++ b/drivers/platform/x86/amd/wbrf.c
@@ -104,8 +104,10 @@ static int wbrf_record(struct acpi_device *adev, uint8_t action, struct wbrf_ran
obj = acpi_evaluate_dsm(adev->handle, &wifi_acpi_dsm_guid,
WBRF_REVISION, WBRF_RECORD, &argv4);
- if (!obj)
+ if (!obj) {
+ kfree(tmp);
return -EINVAL;
+ }
if (obj->type != ACPI_TYPE_INTEGER) {
ret = -EINVAL;
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record()
2026-01-06 9:13 [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Zilin Guan
@ 2026-01-06 9:13 ` Zilin Guan
2026-01-06 11:00 ` [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Markus Elfring
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Zilin Guan @ 2026-01-06 9:13 UTC (permalink / raw)
To: hansg
Cc: ilpo.jarvinen, platform-driver-x86, linux-kernel, Zilin Guan,
Markus Elfring, Jianhao Xu
Simplify resource management in wbrf_record() by using the scope-based
cleanup helper __free(). This ensures that the tmp and obj are
automatically freed when they go out of scope, eliminating the need for
explicit error handling labels and manual freeing.
Suggested-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Suggested-by: Markus Elfring <Markus.Elfring@web.de>
Co-developed-by: Jianhao Xu <jianhao.xu@seu.edu.cn>
Signed-off-by: Jianhao Xu <jianhao.xu@seu.edu.cn>
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
---
Changes in v3:
- Split from v2.
- Use __free(kfree) for 'obj' instead of adding a new DEFINE_FREE() macro.
Changes in v2:
- Use scope-based cleanup helper __free() for automatic resource cleanup.
drivers/platform/x86/amd/wbrf.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/drivers/platform/x86/amd/wbrf.c b/drivers/platform/x86/amd/wbrf.c
index 0f58d252b620..dc10d12bc80d 100644
--- a/drivers/platform/x86/amd/wbrf.c
+++ b/drivers/platform/x86/amd/wbrf.c
@@ -42,8 +42,6 @@ static BLOCKING_NOTIFIER_HEAD(wbrf_chain_head);
static int wbrf_record(struct acpi_device *adev, uint8_t action, struct wbrf_ranges_in_out *in)
{
union acpi_object argv4;
- union acpi_object *tmp;
- union acpi_object *obj;
u32 num_of_ranges = 0;
u32 num_of_elements;
u32 arg_idx = 0;
@@ -74,7 +72,7 @@ static int wbrf_record(struct acpi_device *adev, uint8_t action, struct wbrf_ran
*/
num_of_elements = 2 * num_of_ranges + 2;
- tmp = kcalloc(num_of_elements, sizeof(*tmp), GFP_KERNEL);
+ union acpi_object *tmp __free(kfree) = kcalloc(num_of_elements, sizeof(*tmp), GFP_KERNEL);
if (!tmp)
return -ENOMEM;
@@ -101,26 +99,19 @@ static int wbrf_record(struct acpi_device *adev, uint8_t action, struct wbrf_ran
tmp[arg_idx++].integer.value = in->band_list[i].end;
}
- obj = acpi_evaluate_dsm(adev->handle, &wifi_acpi_dsm_guid,
- WBRF_REVISION, WBRF_RECORD, &argv4);
+ union acpi_object *obj __free(kfree) =
+ acpi_evaluate_dsm(adev->handle, &wifi_acpi_dsm_guid,
+ WBRF_REVISION, WBRF_RECORD, &argv4);
- if (!obj) {
- kfree(tmp);
+ if (!obj)
return -EINVAL;
- }
- if (obj->type != ACPI_TYPE_INTEGER) {
- ret = -EINVAL;
- goto out;
- }
+ if (obj->type != ACPI_TYPE_INTEGER)
+ return -EINVAL;
ret = obj->integer.value;
if (ret)
- ret = -EINVAL;
-
-out:
- ACPI_FREE(obj);
- kfree(tmp);
+ return -EINVAL;
return ret;
}
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record()
2026-01-06 9:13 [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Zilin Guan
2026-01-06 9:13 ` [PATCH v3 2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record() Zilin Guan
@ 2026-01-06 11:00 ` Markus Elfring
2026-01-15 14:27 ` Ilpo Järvinen
2026-01-26 14:30 ` Ilpo Järvinen
3 siblings, 0 replies; 5+ messages in thread
From: Markus Elfring @ 2026-01-06 11:00 UTC (permalink / raw)
To: Jianhao Xu, Zilin Guan, platform-driver-x86, Hans de Goede,
Ilpo Järvinen
Cc: LKML
…
> ---
> Changes in v3:
> - Split from v2 to separate the fix from the cleanup.
…
Would a cover letter be helpful also for such a small patch series?
Regards,
Markus
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record()
2026-01-06 9:13 [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Zilin Guan
2026-01-06 9:13 ` [PATCH v3 2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record() Zilin Guan
2026-01-06 11:00 ` [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Markus Elfring
@ 2026-01-15 14:27 ` Ilpo Järvinen
2026-01-26 14:30 ` Ilpo Järvinen
3 siblings, 0 replies; 5+ messages in thread
From: Ilpo Järvinen @ 2026-01-15 14:27 UTC (permalink / raw)
To: hansg, Zilin Guan; +Cc: platform-driver-x86, linux-kernel, Jianhao Xu
On Tue, 06 Jan 2026 09:13:17 +0000, Zilin Guan wrote:
> The tmp buffer is allocated using kcalloc() but is not freed if
> acpi_evaluate_dsm() fails. This causes a memory leak in the error path.
>
> Fix this by explicitly freeing the tmp buffer in the error handling
> path of acpi_evaluate_dsm().
>
>
> [...]
Thank you for your contribution, it has been applied to my local
review-ilpo-fixes branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-fixes branch only once I've pushed my
local branch there, which might take a while.
The list of commits applied:
[1/2] platform/x86/amd: Fix memory leak in wbrf_record()
commit: 2bf1877b7094c684e1d652cac6912cfbc507ad3e
[2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record()
(no commit info)
--
i.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record()
2026-01-06 9:13 [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Zilin Guan
` (2 preceding siblings ...)
2026-01-15 14:27 ` Ilpo Järvinen
@ 2026-01-26 14:30 ` Ilpo Järvinen
3 siblings, 0 replies; 5+ messages in thread
From: Ilpo Järvinen @ 2026-01-26 14:30 UTC (permalink / raw)
To: hansg, Zilin Guan; +Cc: platform-driver-x86, linux-kernel, Jianhao Xu
On Tue, 06 Jan 2026 09:13:17 +0000, Zilin Guan wrote:
> The tmp buffer is allocated using kcalloc() but is not freed if
> acpi_evaluate_dsm() fails. This causes a memory leak in the error path.
>
> Fix this by explicitly freeing the tmp buffer in the error handling
> path of acpi_evaluate_dsm().
>
>
> [...]
Thank you for your contribution, it has been applied to my local
review-ilpo-next branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-next branch only once I've pushed my
local branch there, which might take a while.
The list of commits applied:
[1/2] platform/x86/amd: Fix memory leak in wbrf_record()
(no commit info)
[2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record()
commit: 2ee832305a25657d7cfb577bc30d8c1d43bfb951
--
i.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-01-26 14:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-06 9:13 [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Zilin Guan
2026-01-06 9:13 ` [PATCH v3 2/2] platform/x86/amd: Use scope-based cleanup for wbrf_record() Zilin Guan
2026-01-06 11:00 ` [PATCH v3 1/2] platform/x86/amd: Fix memory leak in wbrf_record() Markus Elfring
2026-01-15 14:27 ` Ilpo Järvinen
2026-01-26 14:30 ` Ilpo Järvinen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®