[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <MW5PR11MB57872D175B07988AF791E7558DF82@MW5PR11MB5787.namprd11.prod.outlook.com>
Date: Tue, 4 Jun 2024 08:50:07 +0000
From: "Wu, Wentong" <wentong.wu@...el.com>
To: Hans de Goede <hdegoede@...hat.com>
CC: "Rafael J . Wysocki" <rafael@...nel.org>, Sakari Ailus
<sakari.ailus@...ux.intel.com>, "Winkler, Tomas" <tomas.winkler@...el.com>,
Arnd Bergmann <arnd@...db.de>, Greg Kroah-Hartman
<gregkh@...uxfoundation.org>, "linux-acpi@...r.kernel.org"
<linux-acpi@...r.kernel.org>, Kate Hsuan <hpa@...hat.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] mei: vsc: Fix wrong invocation of ACPI SID method
> From: Hans de Goede <hdegoede@...hat.com>
>
> When using an initializer for a union only one of the union members must
> be initialized. The initializer for the acpi_object union variable passed as
> argument to the SID ACPI method was initializing both the type and the
> integer members of the union.
>
> Unfortunately rather then complaining about this gcc simply ignores the first
> initializer and only used the second integer.value = 1 initializer. Leaving type
> set to 0 which leads to the argument being skipped by acpi
> acpi_ns_evaluate() resulting in:
>
> ACPI Warning: \_SB.PC00.SPI1.SPFD.CVFD.SID: Insufficient arguments - Caller
> passed 0, method requires 1 (20240322/nsarguments-232)
>
> Fix this by initializing only the integer struct part of the union and initializing
> both members of the integer struct.
>
> Signed-off-by: Hans de Goede <hdegoede@...hat.com>
Reviewed-by: Wentong Wu <wentong.wu@...el.com>
> ---
> Even though this is a one-liner, figuring out what was actually going wrong
> here took quite a while.
Thanks a lot
BR,
Wentong
> ---
> drivers/misc/mei/vsc-fw-loader.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/misc/mei/vsc-fw-loader.c b/drivers/misc/mei/vsc-fw-
> loader.c
> index ffa4ccd96a10..596a9d695dfc 100644
> --- a/drivers/misc/mei/vsc-fw-loader.c
> +++ b/drivers/misc/mei/vsc-fw-loader.c
> @@ -252,7 +252,7 @@ static int vsc_get_sensor_name(struct vsc_fw_loader
> *fw_loader, {
> struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER };
> union acpi_object obj = {
> - .type = ACPI_TYPE_INTEGER,
> + .integer.type = ACPI_TYPE_INTEGER,
> .integer.value = 1,
> };
> struct acpi_object_list arg_list = {
> --
> 2.45.1
Powered by blists - more mailing lists