From: Armin Wolf <W_Armin@gmx.de>
To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org
Cc: hansg@kernel.org, ilpo.jarvinen@linux.intel.com,
platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org, linux@roeck-us.net,
linux-hwmon@vger.kernel.org
Subject: [PATCH 9/9] modpost: Handle malformed WMI GUID strings
Date: Sun, 8 Mar 2026 01:25:22 +0100 [thread overview]
Message-ID: <20260308002522.4185-10-W_Armin@gmx.de> (raw)
In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de>
Some WMI GUIDs found inside binary MOF files contain both
uppercase and lowercase characters. Blindly copying such
GUIDs will prevent the associated WMI driver from loading
automatically because the WMI GUID found inside WMI device ids
always contains uppercase characters.
Avoid this issue by always converting WMI GUID strings to
uppercase. Also verify that the WMI GUID string actually looks
like a valid GUID.
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
.../wmi/driver-development-guide.rst | 2 +-
scripts/mod/file2alias.c | 28 ++++++++++++++++++-
2 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/Documentation/wmi/driver-development-guide.rst b/Documentation/wmi/driver-development-guide.rst
index fbc2d9b12fe9..74bb156ad9cc 100644
--- a/Documentation/wmi/driver-development-guide.rst
+++ b/Documentation/wmi/driver-development-guide.rst
@@ -54,7 +54,7 @@ to matching WMI devices using a struct wmi_device_id table:
::
static const struct wmi_device_id foo_id_table[] = {
- /* Only use uppercase letters! */
+ /* Using only uppercase letters is recommended */
{ "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL },
{ }
};
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 4e99393a35f1..20e542a888c4 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -1253,6 +1253,8 @@ static void do_tee_entry(struct module *mod, void *symval)
static void do_wmi_entry(struct module *mod, void *symval)
{
DEF_FIELD_ADDR(symval, wmi_device_id, guid_string);
+ char result[sizeof(*guid_string)];
+ int i;
if (strlen(*guid_string) != UUID_STRING_LEN) {
warn("Invalid WMI device id 'wmi:%s' in '%s'\n",
@@ -1260,7 +1262,31 @@ static void do_wmi_entry(struct module *mod, void *symval)
return;
}
- module_alias_printf(mod, false, WMI_MODULE_PREFIX "%s", *guid_string);
+ for (i = 0; i < UUID_STRING_LEN; i++) {
+ char value = (*guid_string)[i];
+ bool valid = false;
+
+ if (i == 8 || i == 13 || i == 18 || i == 23) {
+ if (value == '-')
+ valid = true;
+ } else {
+ if (isxdigit(value))
+ valid = true;
+ }
+
+ if (!valid) {
+ warn("Invalid character %c inside WMI GUID string '%s' in '%s'\n",
+ value, *guid_string, mod->name);
+ return;
+ }
+
+ /* Some GUIDs from BMOF definitions contain lowercase characters */
+ result[i] = toupper(value);
+ }
+
+ result[i] = '\0';
+
+ module_alias_printf(mod, false, WMI_MODULE_PREFIX "%s", result);
}
/* Looks like: mhi:S */
--
2.39.5
next prev parent reply other threads:[~2026-03-08 0:25 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-08 0:25 [PATCH 0/9] Convert most Dell WMI drivers to use the new buffer-based API Armin Wolf
2026-03-08 0:25 ` [PATCH 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Armin Wolf
2026-03-09 15:41 ` Mario Limonciello
2026-03-09 17:23 ` Pali Rohár
2026-03-09 19:45 ` Armin Wolf
2026-03-10 1:53 ` Mario Limonciello
2026-03-10 10:46 ` Gergo Koteles
2026-03-14 17:55 ` Armin Wolf
2026-03-08 0:25 ` [PATCH 2/9] platform/x86: dell-privacy: " Armin Wolf
2026-03-08 0:25 ` [PATCH 3/9] platform/x86: dell-smbios-wmi: " Armin Wolf
2026-03-08 0:25 ` [PATCH 4/9] platform/x86: dell-wmi-base: " Armin Wolf
2026-03-08 0:25 ` [PATCH 5/9] platform/x86: dell-ddv: " Armin Wolf
2026-03-08 0:25 ` [PATCH 6/9] hwmon: (dell-smm) " Armin Wolf
2026-03-08 14:52 ` Guenter Roeck
2026-03-08 20:03 ` Armin Wolf
2026-03-08 0:25 ` [PATCH 7/9] platform/wmi: Make wmi_bus_class const Armin Wolf
2026-03-08 0:25 ` [PATCH 8/9] platform/wmi: Make sysfs attributes const Armin Wolf
2026-03-08 0:25 ` Armin Wolf [this message]
2026-03-09 16:07 ` [PATCH 9/9] modpost: Handle malformed WMI GUID strings Mario Limonciello
2026-03-14 17:56 ` Armin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260308002522.4185-10-W_Armin@gmx.de \
--to=w_armin@gmx.de \
--cc=Dell.Client.Kernel@dell.com \
--cc=hansg@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mjg59@srcf.ucam.org \
--cc=pali@kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox