diff mbox series

[v2] platform/x86: wmi: Use ACPI device name in netlink event

Message ID 20240121200824.2778-1-W_Armin@gmx.de (mailing list archive)
State Accepted, archived
Headers show
Series [v2] platform/x86: wmi: Use ACPI device name in netlink event | expand

Commit Message

Armin Wolf Jan. 21, 2024, 8:08 p.m. UTC
The device name inside the ACPI netlink event is limited to
15 characters, so the WMI device name will get truncated.

This can be observed with kacpimon when receiving an event
from WMI device "9DBB5994-A997-11DA-B012-B622A1EF5492":

	netlink:  9DBB5994-A997- 000000d0 00000000

Fix this by using the shorter device name from the ACPI
bus device instead. This still allows users to uniquely
identify the WMI device by using the notify id (0xd0).

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
Changes since v1:
- use acpi_dev_name() helper function
---
 drivers/platform/x86/wmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
2.39.2

Comments

Hans de Goede Jan. 22, 2024, 11:29 a.m. UTC | #1
Hi Armin,

On 1/21/24 21:08, Armin Wolf wrote:
> The device name inside the ACPI netlink event is limited to
> 15 characters, so the WMI device name will get truncated.
> 
> This can be observed with kacpimon when receiving an event
> from WMI device "9DBB5994-A997-11DA-B012-B622A1EF5492":
> 
> 	netlink:  9DBB5994-A997- 000000d0 00000000
> 
> Fix this by using the shorter device name from the ACPI
> bus device instead. This still allows users to uniquely
> identify the WMI device by using the notify id (0xd0).
> 
> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
> ---
> Changes since v1:
> - use acpi_dev_name() helper function

I'm a bit divided on this patch. I agree the new way of doing
things is better, but technically this is a bit of a userspace API
break.

I guess we could hope that nothing depends on the old netlink API
format / name but I'm not sure we can rely on that ...

Ilpo, Andy do you have any opinion on this ?

Regards,

Hans




> ---
>  drivers/platform/x86/wmi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
> index a7cfcbf92432..c61860db66ed 100644
> --- a/drivers/platform/x86/wmi.c
> +++ b/drivers/platform/x86/wmi.c
> @@ -1202,7 +1202,7 @@ static int wmi_notify_device(struct device *dev, void *data)
>  	}
> 
>  	acpi_bus_generate_netlink_event(wblock->acpi_device->pnp.device_class,
> -					dev_name(&wblock->dev.dev), *event, 0);
> +					acpi_dev_name(wblock->acpi_device), *event, 0);
> 
>  	return -EBUSY;
>  }
> --
> 2.39.2
>
Ilpo Järvinen Jan. 22, 2024, 12:47 p.m. UTC | #2
On Mon, 22 Jan 2024, Hans de Goede wrote:
> On 1/21/24 21:08, Armin Wolf wrote:
> > The device name inside the ACPI netlink event is limited to
> > 15 characters, so the WMI device name will get truncated.
> > 
> > This can be observed with kacpimon when receiving an event
> > from WMI device "9DBB5994-A997-11DA-B012-B622A1EF5492":
> > 
> > 	netlink:  9DBB5994-A997- 000000d0 00000000
> > 
> > Fix this by using the shorter device name from the ACPI
> > bus device instead. This still allows users to uniquely
> > identify the WMI device by using the notify id (0xd0).
> > 
> > Signed-off-by: Armin Wolf <W_Armin@gmx.de>
> > ---
> > Changes since v1:
> > - use acpi_dev_name() helper function
> 
> I'm a bit divided on this patch. I agree the new way of doing
> things is better, but technically this is a bit of a userspace API
> break.
> 
> I guess we could hope that nothing depends on the old netlink API
> format / name but I'm not sure we can rely on that ...
> 
> Ilpo, Andy do you have any opinion on this ?

Hi Armin,

Have you tried to conduct debian code search to find the code using this?
Armin Wolf Jan. 22, 2024, 3:03 p.m. UTC | #3
Am 22.01.24 um 13:47 schrieb Ilpo Järvinen:

> On Mon, 22 Jan 2024, Hans de Goede wrote:
>> On 1/21/24 21:08, Armin Wolf wrote:
>>> The device name inside the ACPI netlink event is limited to
>>> 15 characters, so the WMI device name will get truncated.
>>>
>>> This can be observed with kacpimon when receiving an event
>>> from WMI device "9DBB5994-A997-11DA-B012-B622A1EF5492":
>>>
>>> 	netlink:  9DBB5994-A997- 000000d0 00000000
>>>
>>> Fix this by using the shorter device name from the ACPI
>>> bus device instead. This still allows users to uniquely
>>> identify the WMI device by using the notify id (0xd0).
>>>
>>> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
>>> ---
>>> Changes since v1:
>>> - use acpi_dev_name() helper function
>> I'm a bit divided on this patch. I agree the new way of doing
>> things is better, but technically this is a bit of a userspace API
>> break.
>>
>> I guess we could hope that nothing depends on the old netlink API
>> format / name but I'm not sure we can rely on that ...
>>
>> Ilpo, Andy do you have any opinion on this ?
> Hi Armin,
>
> Have you tried to conduct debian code search to find the code using this?
>
I did, but i found nothing.

I am also preparing to properly initialize the device_class field in another patch,
and this also has the potential of breaking userspace if some users created custom
acpid configs to listen to those events.

I think we can revert those changes anytime if someones turns out to be actually depending
on them.

Armin Wolf
Hans de Goede Jan. 24, 2024, 11:06 a.m. UTC | #4
Hi,

On 1/22/24 16:03, Armin Wolf wrote:
> Am 22.01.24 um 13:47 schrieb Ilpo Järvinen:
> 
>> On Mon, 22 Jan 2024, Hans de Goede wrote:
>>> On 1/21/24 21:08, Armin Wolf wrote:
>>>> The device name inside the ACPI netlink event is limited to
>>>> 15 characters, so the WMI device name will get truncated.
>>>>
>>>> This can be observed with kacpimon when receiving an event
>>>> from WMI device "9DBB5994-A997-11DA-B012-B622A1EF5492":
>>>>
>>>>     netlink:  9DBB5994-A997- 000000d0 00000000
>>>>
>>>> Fix this by using the shorter device name from the ACPI
>>>> bus device instead. This still allows users to uniquely
>>>> identify the WMI device by using the notify id (0xd0).
>>>>
>>>> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
>>>> ---
>>>> Changes since v1:
>>>> - use acpi_dev_name() helper function
>>> I'm a bit divided on this patch. I agree the new way of doing
>>> things is better, but technically this is a bit of a userspace API
>>> break.
>>>
>>> I guess we could hope that nothing depends on the old netlink API
>>> format / name but I'm not sure we can rely on that ...
>>>
>>> Ilpo, Andy do you have any opinion on this ?
>> Hi Armin,
>>
>> Have you tried to conduct debian code search to find the code using this?
>>
> I did, but i found nothing.
> 
> I am also preparing to properly initialize the device_class field in another patch,
> and this also has the potential of breaking userspace if some users created custom
> acpid configs to listen to those events.
> 
> I think we can revert those changes anytime if someones turns out to be actually depending
> on them.

Based on the above I'm willing to go ahead with these changes, with
the note that we need to be prepared to revert this immediately if we
get any reports if this breaking userspace.

Given the (unlikely) potential breakage I think it would be good
to get this change into linux-next soon for maximum testing.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans
Ilpo Järvinen Jan. 24, 2024, 11:10 a.m. UTC | #5
On Sun, 21 Jan 2024 21:08:24 +0100, Armin Wolf wrote:

> The device name inside the ACPI netlink event is limited to
> 15 characters, so the WMI device name will get truncated.
> 
> This can be observed with kacpimon when receiving an event
> from WMI device "9DBB5994-A997-11DA-B012-B622A1EF5492":
> 
> 	netlink:  9DBB5994-A997- 000000d0 00000000
> 
> [...]


Thank you for your contribution, it has been applied to my local
review-ilpo branch. Note it will show up in the public
platform-drivers-x86/review-ilpo branch only once I've pushed my
local branch there, which might take a while.

The list of commits applied:
[1/1] platform/x86: wmi: Use ACPI device name in netlink event
      commit: 3f399b5d7189bcb608c75abc85fe39f7a5509cfa

--
 i.
diff mbox series

Patch

diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index a7cfcbf92432..c61860db66ed 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -1202,7 +1202,7 @@  static int wmi_notify_device(struct device *dev, void *data)
 	}

 	acpi_bus_generate_netlink_event(wblock->acpi_device->pnp.device_class,
-					dev_name(&wblock->dev.dev), *event, 0);
+					acpi_dev_name(wblock->acpi_device), *event, 0);

 	return -EBUSY;
 }