mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 03:35:32 -04:00
platform/x86: panasonic-laptop: simplify allocation of sinf
Change to a flexible array member to allocate once instead of twice. Use __counted_by for extra runtime analysis. Move the counting variable assignment to right after allocation as done by kzalloc_flex for GCC 15 and above. Remove + 1 to allocation. It's already done in the previous line. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260430221555.83351-1-rosenp@gmail.com 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
18bc6ce6bb
commit
a3d0dbd18c
@@ -246,11 +246,11 @@ struct pcc_acpi {
|
||||
int ac_brightness;
|
||||
int dc_brightness;
|
||||
int current_brightness;
|
||||
u32 *sinf;
|
||||
struct acpi_device *device;
|
||||
struct input_dev *input_dev;
|
||||
struct backlight_device *backlight;
|
||||
struct platform_device *platform;
|
||||
u32 sinf[] __counted_by(num_sifr);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -1003,21 +1003,15 @@ static int acpi_pcc_hotkey_probe(struct platform_device *pdev)
|
||||
*/
|
||||
num_sifr++;
|
||||
|
||||
pcc = kzalloc_obj(struct pcc_acpi);
|
||||
pcc = kzalloc_flex(*pcc, sinf, num_sifr);
|
||||
if (!pcc) {
|
||||
pr_err("Couldn't allocate mem for pcc");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
pcc->sinf = kcalloc(num_sifr + 1, sizeof(u32), GFP_KERNEL);
|
||||
if (!pcc->sinf) {
|
||||
result = -ENOMEM;
|
||||
goto out_hotkey;
|
||||
}
|
||||
|
||||
pcc->num_sifr = num_sifr;
|
||||
pcc->device = device;
|
||||
pcc->handle = device->handle;
|
||||
pcc->num_sifr = num_sifr;
|
||||
device->driver_data = pcc;
|
||||
strscpy(acpi_device_name(device), ACPI_PCC_DEVICE_NAME);
|
||||
strscpy(acpi_device_class(device), ACPI_PCC_CLASS);
|
||||
@@ -1025,7 +1019,7 @@ static int acpi_pcc_hotkey_probe(struct platform_device *pdev)
|
||||
result = acpi_pcc_init_input(pcc);
|
||||
if (result) {
|
||||
pr_err("Error installing keyinput handler\n");
|
||||
goto out_sinf;
|
||||
goto out_hotkey;
|
||||
}
|
||||
|
||||
if (!acpi_pcc_retrieve_biosdata(pcc)) {
|
||||
@@ -1106,10 +1100,8 @@ static int acpi_pcc_hotkey_probe(struct platform_device *pdev)
|
||||
backlight_device_unregister(pcc->backlight);
|
||||
out_input:
|
||||
input_unregister_device(pcc->input_dev);
|
||||
out_sinf:
|
||||
device->driver_data = NULL;
|
||||
kfree(pcc->sinf);
|
||||
out_hotkey:
|
||||
device->driver_data = NULL;
|
||||
kfree(pcc);
|
||||
|
||||
return result;
|
||||
@@ -1139,7 +1131,6 @@ static void acpi_pcc_hotkey_remove(struct platform_device *pdev)
|
||||
|
||||
device->driver_data = NULL;
|
||||
|
||||
kfree(pcc->sinf);
|
||||
kfree(pcc);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user