On Wed, 14 Feb 2024, Armin Wolf wrote: > WMI event drivers which do not have no_notify_data set expect > that each WMI event contains valid data. Evaluating _WED however > might return no data, which can cause issues with such drivers. > > Fix this by validating that evaluating _WED did return data. > > Signed-off-by: Armin Wolf <W_Armin@xxxxxx> > --- > drivers/platform/x86/wmi.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c > index 34d8f55afaad..8a916887c546 100644 > --- a/drivers/platform/x86/wmi.c > +++ b/drivers/platform/x86/wmi.c > @@ -1211,6 +1211,7 @@ static void wmi_notify_driver(struct wmi_block *wblock) > { > struct wmi_driver *driver = drv_to_wdrv(wblock->dev.dev.driver); > struct acpi_buffer data = { ACPI_ALLOCATE_BUFFER, NULL }; > + union acpi_object *obj = NULL; > acpi_status status; > > if (!driver->no_notify_data) { > @@ -1219,12 +1220,18 @@ static void wmi_notify_driver(struct wmi_block *wblock) > dev_warn(&wblock->dev.dev, "Failed to get event data\n"); > return; > } > + > + obj = data.pointer; > + if (!obj) { > + dev_warn(&wblock->dev.dev, "Event contains not event data\n"); > + return; > + } > } > > if (driver->notify) > - driver->notify(&wblock->dev, data.pointer); > + driver->notify(&wblock->dev, obj); > > - kfree(data.pointer); > + kfree(obj); Hi Armin, While looking into this patch, I failed to connect the mention of no_notify_data in the commit message with the code change that does nothing differently based no_notify_data being set or not, AFAICT. It could be just that you need to explain things better in the commit message, I'm not sure. -- i.