platform/x86: dell-smbios: Fix wrong token data in sysfs
authorArmin Wolf <W_Armin@gmx.de>
Tue, 28 May 2024 20:49:02 +0000 (22:49 +0200)
committerHans de Goede <hdegoede@redhat.com>
Mon, 3 Jun 2024 09:53:54 +0000 (11:53 +0200)
commit1981b296f858010eae409548fd297659b2cc570e
treee491a7b5a6476885c15b1373d2dcdd3e8d92ce1c
parent078fc56f5c1787a9272373742f817b320c046d1a
platform/x86: dell-smbios: Fix wrong token data in sysfs

When reading token data from sysfs on my Inspiron 3505, the token
locations and values are wrong. This happens because match_attribute()
blindly assumes that all entries in da_tokens have an associated
entry in token_attrs.

This however is not true as soon as da_tokens[] contains zeroed
token entries. Those entries are being skipped when initialising
token_attrs, breaking the core assumption of match_attribute().

Fix this by defining an extra struct for each pair of token attributes
and use container_of() to retrieve token information.

Tested on a Dell Inspiron 3050.

Fixes: 33b9ca1e53b4 ("platform/x86: dell-smbios: Add a sysfs interface for SMBIOS tokens")
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240528204903.445546-1-W_Armin@gmx.de
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/dell/dell-smbios-base.c