mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-02 09:21:19 -04:00
platform/x86/amd: Use scope-based cleanup for wbrf_record()
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> Link: https://patch.msgid.link/20260106091318.747019-2-zilin@seu.edu.cn Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
committed by
Ilpo Järvinen
parent
6343e06788
commit
2ee832305a
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user