> From: Hans de Goede <hdegoede@xxxxxxxxxx> > > 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@xxxxxxxxxx> Reviewed-by: Wentong Wu <wentong.wu@xxxxxxxxx> > --- > 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