From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D994A37C925; Fri, 5 Jun 2026 18:14:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683283; cv=none; b=jJZlG610zzE9sUYKZNAQ8dLTWANOZ40whHZ+A4Xe+NBSzEnWQNXvjfwACXFIydmsyA4VqpipZobwBqcX1OITwGdJydgFWVjB3X7XLSDGt8TTHobu8y3Iu+WhTmdeI0G8QjD2S8xKuPu2lPoyxbZ0V9AsGAOY5GGJd9U76NBvveM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683283; c=relaxed/simple; bh=JNSYqRABJfUmWpUfWRdNbJwoSxSYtDQH38QJQl1v4MU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UEsnYO/aEzUZLBse47liq2UOhpjTYokDvQe28TX2pQoatuCi6bZXRkHKWa7gvmTNdV3xnWzxvGEh6BZ0YwI4pot4GEDLpUbOLtUgnrX95slgEMfffE4uOVz1/gbuPwhf8qOzOdHcYpkI0Rl/fmb8xUAN9d1dRHzsX7+MeMHl8eo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=rQB7oFD0; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="rQB7oFD0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683280; x=1781288080; i=w_armin@gmx.de; bh=NYXACJwZaKeEq0yR7VQMig+LVTxXuXx+Zjx3J5uMor8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=rQB7oFD0Ip035zplzydpKvOUYhtEmS1KkyX65a2U/t1G5R39ztbli63jDHYArVbH Q0AMzfrz9+F8GHw1RxXD7UF5GDYrUOLQSd7Z0k++N6l0MUPXQ/40DYaRHCu3tJWpq jT1cTkFJkY2P2eW0PVdjb9bBY+LTn1cbu/unRtZrJR+OmTBQ44qrLsZvUw/ZVHP5z mpuFJhlvDrHjExHVwT1GTajRIWi7i0hhJ43VbdL1xoy3BXW5PfIKJGdItTpsNNlNr uCvMe7DIvEyYw967FlpPlC2c4NNEZzo4YL9O0JGbEKoAm4TrF6YvFXX8VXola/hjU LLMLJYPFApuNdxj+vQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MTRQq-1whmQl44dA-00O2eY; Fri, 05 Jun 2026 20:14:40 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 20:14:25 +0200 Message-Id: <20260605181433.188847-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Pf5pISnempVqJQU1Gp3ABcicjnoysGFryqUbgt9akMxMAHDHnAa yNDE6BoWURPPeKt3cRqS4LhlxJsKHDbKGCDQOTovSW4TunFvnOcPpbhOeHiee1TWXZNtiro 9f4WahftLuUQhYk8kUYNSWY36IdvrwOyjHM4X5HAc0zL0CfsSlHmkg2/BkRi3WAFGEHnN4k IaHpfbBE6T5R9c2aVtfnA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Uvak/OMKSlE=;rUJokYyHYDv1lCQD5cpMh4YmCl1 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 ZjRlGQIZ4aDxxGqw1zzDNxNzh1NtLKbmm2i60Tl Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for the descriptor. Signed-off-by: Armin Wolf --- .../platform/x86/dell/dell-wmi-descriptor.c | 108 ++++++++---------- 1 file changed, 48 insertions(+), 60 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-descriptor.c b/drivers/plat= form/x86/dell/dell-wmi-descriptor.c index c2a180202719..d1e751d43021 100644 --- a/drivers/platform/x86/dell/dell-wmi-descriptor.c +++ b/drivers/platform/x86/dell/dell-wmi-descriptor.c @@ -7,14 +7,34 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include +#include #include #include +#include #include #include "dell-wmi-descriptor.h" =20 #define DELL_WMI_DESCRIPTOR_GUID "8D9DDCBC-A997-11DA-B012-B622A1EF5492" =20 +/* + * Descriptor buffer is 128 byte long and contains: + * + * Name Offset Length Value + * Vendor Signature 0 4 "DELL" + * Object Signature 4 4 " WMI" + * WMI Interface Version 8 4 + * WMI buffer length 12 4 + * WMI hotfix number 16 4 + */ +struct descriptor { + char vendor_signature[4]; + char object_signature[4]; + __le32 interface_version; + __le32 buffer_length; + __le32 hotfix_number; +} __packed; + struct descriptor_priv { struct list_head list; u32 interface_version; @@ -88,77 +108,47 @@ bool dell_wmi_get_hotfix(u32 *hotfix) } EXPORT_SYMBOL_GPL(dell_wmi_get_hotfix); =20 -/* - * Descriptor buffer is 128 byte long and contains: - * - * Name Offset Length Value - * Vendor Signature 0 4 "DELL" - * Object Signature 4 4 " WMI" - * WMI Interface Version 8 4 - * WMI buffer length 12 4 - * WMI hotfix number 16 4 - */ -static int dell_wmi_descriptor_probe(struct wmi_device *wdev, - const void *context) +static int dell_wmi_descriptor_probe(struct wmi_device *wdev, const void *= context) { - union acpi_object *obj =3D NULL; + struct descriptor *desc __free(kfree) =3D NULL; struct descriptor_priv *priv; - u32 *buffer; + struct wmi_buffer buffer; int ret; =20 - obj =3D wmidev_block_query(wdev, 0); - if (!obj) { - dev_err(&wdev->dev, "failed to read Dell WMI descriptor\n"); - ret =3D -EIO; - goto out; - } - - if (obj->type !=3D ACPI_TYPE_BUFFER) { - dev_err(&wdev->dev, "Dell descriptor has wrong type\n"); - ret =3D -EINVAL; + ret =3D wmidev_query_block(wdev, 0, &buffer, sizeof(*desc)); + if (ret < 0) { descriptor_valid =3D ret; - goto out; + return ret; } =20 - /* Although it's not technically a failure, this would lead to - * unexpected behavior - */ - if (obj->buffer.length !=3D 128) { - dev_err(&wdev->dev, - "Dell descriptor buffer has unexpected length (%d)\n", - obj->buffer.length); - ret =3D -EINVAL; - descriptor_valid =3D ret; - goto out; - } + desc =3D buffer.data; =20 - buffer =3D (u32 *)obj->buffer.pointer; + if (strncmp(desc->vendor_signature, "DELL", sizeof(desc->vendor_signature= ))) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid vendor signature= (%4ph)\n", + desc->vendor_signature); + descriptor_valid =3D -ENOMSG; + return -ENOMSG; + } =20 - if (strncmp(obj->string.pointer, "DELL WMI", 8) !=3D 0) { - dev_err(&wdev->dev, "Dell descriptor buffer has invalid signature (%8ph)= \n", - buffer); - ret =3D -EINVAL; - descriptor_valid =3D ret; - goto out; + if (strncmp(desc->object_signature, " WMI", sizeof(desc->vendor_signature= ))) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid object signature= (%4ph)\n", + desc->object_signature); + descriptor_valid =3D -ENOMSG; + return -ENOMSG; } descriptor_valid =3D 0; =20 - if (buffer[2] !=3D 0 && buffer[2] !=3D 1) - dev_warn(&wdev->dev, "Dell descriptor buffer has unknown version (%lu)\n= ", - (unsigned long) buffer[2]); - - priv =3D devm_kzalloc(&wdev->dev, sizeof(struct descriptor_priv), - GFP_KERNEL); + if (le32_to_cpu(desc->interface_version) > 2) + dev_warn(&wdev->dev, "Dell descriptor buffer has unknown version (%u)\n", + le32_to_cpu(desc->interface_version)); =20 - if (!priv) { - ret =3D -ENOMEM; - goto out; - } + priv =3D devm_kzalloc(&wdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; =20 - priv->interface_version =3D buffer[2]; - priv->size =3D buffer[3]; - priv->hotfix =3D buffer[4]; - ret =3D 0; + priv->interface_version =3D le32_to_cpu(desc->interface_version); + priv->size =3D le32_to_cpu(desc->buffer_length); + priv->hotfix =3D le32_to_cpu(desc->hotfix_number); dev_set_drvdata(&wdev->dev, priv); mutex_lock(&list_mutex); list_add_tail(&priv->list, &wmi_list); @@ -169,8 +159,6 @@ static int dell_wmi_descriptor_probe(struct wmi_device = *wdev, (unsigned long) priv->size, (unsigned long) priv->hotfix); =20 -out: - kfree(obj); return ret; } =20 --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 607C03B0AE3; Fri, 5 Jun 2026 18:15:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683304; cv=none; b=MeFhcQMYpkHfBJ7LFEWA505GZbSKAeit1j1KHjXYDjqKTrNXy2BkOXXrFbyfkn2CamfbdJRmi3NYvfi4NTl9FlbU+/uC9aCrXf/aoAJ5iqWqQHznGJooqBCSCXKImpJ4F86j/7K6F97Hs484nIepxNbGeRYD+8+S7cpgkuElK5A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683304; c=relaxed/simple; bh=gnbU5Ilb+yduUOyOT2fsPrx/iMgmPn7saMoQHwrSEeE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aE/c1s5MDdpwoEztbAu95ZI+KIyZuh3mzVGKm2YCpBfNUgy0+h62vq8mXfKQpn88IXNFR6GdIH29pbHNTfaKxxEhz3jTRKXwBZeiQnT8qc1aNBAayKgcz+vGYpSIaEdeCPejtCYUdaywMLmSYaTyvp9+cZ4IJHV+llV53hEHSGU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=iBM4OyLx; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="iBM4OyLx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683281; x=1781288081; i=w_armin@gmx.de; bh=N7rpZGky13GHZDyEkDi0LgjTZgpTVhYyiqjgI3mJIMY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=iBM4OyLxIYmQM8d17zB8sb8jNES8ZzviffRE0ZhspUswEj8vGoV9lsXE+OpkJe0J Ri5dPQfQVVGYJbmwAa5CoXVaas3Uoc+xwhE+ScVeq4fcCTH5KgbyYu8o/i6QdoQyN 3Hyg29mbZCTYq1tsGy9rRWK4WWWfQKmXVeE1UTNoDGUlaOb2kDa5mUoV3u6Y/gtm0 J5tIaQlS4Gi43IK8p6nw56nkiOT88540s3wG6pU5APAivAlk9qfabOqASz68e5l3V mxFLHdwlM8sg8lpJ4vSqwSGVZlvLCf/ZAG7A73wajNTTz7nY/Y50UoMcepCoUT++G 0Q46xYViq8xtV2BEUg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MSt8Q-1whECs3d3m-00PkLT; Fri, 05 Jun 2026 20:14:40 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 2/9] platform/x86: dell-privacy: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 20:14:26 +0200 Message-Id: <20260605181433.188847-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:IqZH6KjwlpqYSGdy6ZXnMutDH9EtKSyfEJDEeQiJfMOAtEdBxOG cnCHXohiOxHsg/Vq6rZG2w8RBpz/8kVOjQQ1215nUAqifSrdrB1GvDdBCTJtBW2Wbk9Ytb6 ZJDirnDak8HeToLTEyekHYw5nbn+qiJF4WEskVSlvusUoLPfVU5DW8ly5KjDrN7onbnJoVz MMP32FWUWzSym5Hen8dqw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:DiMB7VfLFgI=;rh7yRXXfoPbG6cfxuUCITILZmeF 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 Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for the device state. Signed-off-by: Armin Wolf --- drivers/platform/x86/dell/dell-wmi-privacy.c | 77 +++++++++----------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-privacy.c b/drivers/platfor= m/x86/dell/dell-wmi-privacy.c index ed099a431ea4..7bc1bae3a196 100644 --- a/drivers/platform/x86/dell/dell-wmi-privacy.c +++ b/drivers/platform/x86/dell/dell-wmi-privacy.c @@ -9,11 +9,14 @@ =20 #include #include +#include +#include #include #include #include #include #include +#include #include =20 #include "dell-wmi-privacy.h" @@ -25,6 +28,26 @@ #define DELL_PRIVACY_CAMERA_EVENT 0x2 #define led_to_priv(c) container_of(c, struct privacy_wmi_data, cdev) =20 +/* + * Describes the Device State class exposed by BIOS which can be consumed = by + * various applications interested in knowing the Privacy feature capabili= ties. + * class DeviceState + * { + * [key, read] string InstanceName; + * [read] boolean ReadOnly; + * + * [WmiDataId(1), read] uint32 DevicesSupported; + * 0 - None; 0x1 - Microphone; 0x2 - Camera; 0x4 - ePrivacy Screen + * + * [WmiDataId(2), read] uint32 CurrentState; + * 0 - Off; 1 - On; Bit0 - Microphone; Bit1 - Camera; Bit2 - ePrivacyScr= een + * }; + */ +struct device_state { + __le32 devices_supported; + __le32 current_state; +} __packed; + /* * The wmi_list is used to store the privacy_priv struct with mutex protec= ting */ @@ -185,60 +208,28 @@ static struct attribute *privacy_attrs[] =3D { }; ATTRIBUTE_GROUPS(privacy); =20 -/* - * Describes the Device State class exposed by BIOS which can be consumed = by - * various applications interested in knowing the Privacy feature capabili= ties. - * class DeviceState - * { - * [key, read] string InstanceName; - * [read] boolean ReadOnly; - * - * [WmiDataId(1), read] uint32 DevicesSupported; - * 0 - None; 0x1 - Microphone; 0x2 - Camera; 0x4 - ePrivacy Screen - * - * [WmiDataId(2), read] uint32 CurrentState; - * 0 - Off; 1 - On; Bit0 - Microphone; Bit1 - Camera; Bit2 - ePrivacyScr= een - * }; - */ static int get_current_status(struct wmi_device *wdev) { struct privacy_wmi_data *priv =3D dev_get_drvdata(&wdev->dev); - union acpi_object *obj_present; - u32 *buffer; - int ret =3D 0; + struct device_state *state __free(kfree) =3D NULL; + struct wmi_buffer buffer; + int ret; =20 if (!priv) { dev_err(&wdev->dev, "dell privacy priv is NULL\n"); return -EINVAL; } + /* check privacy support features and device states */ - obj_present =3D wmidev_block_query(wdev, 0); - if (!obj_present) { - dev_err(&wdev->dev, "failed to read Binary MOF\n"); - return -EIO; - } + ret =3D wmidev_query_block(wdev, 0, &buffer, sizeof(*state)); + if (ret < 0) + return ret; =20 - if (obj_present->type !=3D ACPI_TYPE_BUFFER) { - dev_err(&wdev->dev, "Binary MOF is not a buffer!\n"); - ret =3D -EIO; - goto obj_free; - } - /* Although it's not technically a failure, this would lead to - * unexpected behavior - */ - if (obj_present->buffer.length !=3D 8) { - dev_err(&wdev->dev, "Dell privacy buffer has unexpected length (%d)!\n", - obj_present->buffer.length); - ret =3D -EINVAL; - goto obj_free; - } - buffer =3D (u32 *)obj_present->buffer.pointer; - priv->features_present =3D buffer[0]; - priv->last_status =3D buffer[1]; + state =3D buffer.data; + priv->features_present =3D le32_to_cpu(state->devices_supported); + priv->last_status =3D le32_to_cpu(state->current_state); =20 -obj_free: - kfree(obj_present); - return ret; + return 0; } =20 static int dell_privacy_micmute_led_set(struct led_classdev *led_cdev, --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 705A13B3892; Fri, 5 Jun 2026 18:15:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683309; cv=none; b=T1fucewdvQzMlsnWbQosWnGIvLYDiap8Y7aEjcs3Lhg0PDxhtwfCFiZM3JSjgS8bySWr1UGkmX+KdDvIIi5/MHxG+SIV1r2cNqzPACY4WWj3V9z9n3YRFzoMQnOZxMhWyVx/K9AuF5h7SrkoZr40YwUfHSq2/dL859jMGyqgqRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683309; c=relaxed/simple; bh=W3THHfIlBw4EfhGFn4fMDV4RYz4Xqd76fqVyB+3Ly20=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uxJ58Qp1icbM8tUKLRMarxrITiNBpSrnl+NzQWznj7ZgwqFNynOgriAyXePsYCWWwJY36t7J1X3SCQpQv9FN/TpGEZvvCdQ6nbL+pAosMXvYeCVWM+11zSKdQSlCULvvOXGKfH2cLCRoKrKX73gYlwgPkzpQhS8D5xl9x4C2zOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=n9qm5RFF; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="n9qm5RFF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683281; x=1781288081; i=w_armin@gmx.de; bh=SsErBAw2a9ir3sxsOtEpGKYSPmBucPxoQbrhZs990pw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=n9qm5RFFGGJFc0jC2mLg7nCUn7X7yJ+9JZnujpToVKjvEwf0IUpuwGyhLjkKxOOs FDXgDlvhUN4hY039pxCEkOKnyR1CS/m9v3TjyVUrmQ10GbcdPfTPSg+o04Y3Ig317 FNPIhQVEX3MYV8BjpHtke5/SxmWc3DszdT9UeYODNMuTMODqoqLm2jE63LZmi34zY dNEp3nfhNZnX0XGQXJsd2fHZBLeePXMAAVjCKLbtrfEuYalX8BGm8cP8ZQh5TUo+z bjmLCOxhTxCHnuPTWffTlXhA3yptFnP8YC67x6nfRc3jqJco/BTPZ2E4zMZ6FVzeV fX1HePIqCTZDOy/pGA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpUYu-1x3pYj38NY-00bKCJ; Fri, 05 Jun 2026 20:14:41 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 3/9] platform/x86: dell-smbios-wmi: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 20:14:27 +0200 Message-Id: <20260605181433.188847-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ZT1jpODSmo3XUY5QLlk5SRnnjyf+zCraW1Usckc3fBsESPDT7sb s2JRc5jVOGv0GmAVysC3mxs3t6i+8HSw6GnOZ3szsPmRV4JcfFFyU89RiQ/oIBn329l3MLO cW0tnzvI8cJ1Tc6a9HEhfonLW3qm2IrmLvcmmUghf9yWtAZIP463vsfC9xMzgbuQa7gzK1b 8CTtBsP5M87Dm31Wsxfsw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:qqWixgnhq18=;JBuK/4A2r7Edq+fsfjiBPKV+hAO 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 Wwb3Q+F4kZa9pLvNN3E2LHXy4iM= Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for returning the results of a SMBIOS call. Signed-off-by: Armin Wolf --- drivers/platform/x86/dell/dell-smbios-wmi.c | 40 +++++++++------------ 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/drivers/platform/x86/dell/dell-smbios-wmi.c b/drivers/platform= /x86/dell/dell-smbios-wmi.c index a7dca8c59d60..64d0871b706e 100644 --- a/drivers/platform/x86/dell/dell-smbios-wmi.c +++ b/drivers/platform/x86/dell/dell-smbios-wmi.c @@ -50,38 +50,32 @@ static inline struct wmi_smbios_priv *get_first_smbios_= priv(void) =20 static int run_smbios_call(struct wmi_device *wdev) { - struct acpi_buffer output =3D {ACPI_ALLOCATE_BUFFER, NULL}; - struct wmi_smbios_priv *priv; - struct acpi_buffer input; - union acpi_object *obj; - acpi_status status; - - priv =3D dev_get_drvdata(&wdev->dev); - input.length =3D priv->req_buf_size - sizeof(u64); - input.pointer =3D &priv->buf->std; + struct wmi_smbios_priv *priv =3D dev_get_drvdata(&wdev->dev); + const struct wmi_buffer input =3D { + .length =3D priv->req_buf_size - sizeof(u64), + .data =3D &priv->buf->std, + }; + struct wmi_buffer output; + int ret; =20 dev_dbg(&wdev->dev, "evaluating: %u/%u [%x,%x,%x,%x]\n", priv->buf->std.cmd_class, priv->buf->std.cmd_select, priv->buf->std.input[0], priv->buf->std.input[1], priv->buf->std.input[2], priv->buf->std.input[3]); =20 - status =3D wmidev_evaluate_method(wdev, 0, 1, &input, &output); - if (ACPI_FAILURE(status)) - return -EIO; - obj =3D (union acpi_object *)output.pointer; - if (obj->type !=3D ACPI_TYPE_BUFFER) { - dev_dbg(&wdev->dev, "received type: %d\n", obj->type); - if (obj->type =3D=3D ACPI_TYPE_INTEGER) - dev_dbg(&wdev->dev, "SMBIOS call failed: %llu\n", - obj->integer.value); - kfree(output.pointer); - return -EIO; - } - memcpy(input.pointer, obj->buffer.pointer, obj->buffer.length); + /* + * The output buffer returned by the WMI method should have at least the = size + * of the input buffer. + */ + ret =3D wmidev_invoke_method(wdev, 0, 1, &input, &output, input.length); + if (ret < 0) + return ret; + + memcpy(input.data, output.data, input.length); + kfree(output.data); dev_dbg(&wdev->dev, "result: [%08x,%08x,%08x,%08x]\n", priv->buf->std.output[0], priv->buf->std.output[1], priv->buf->std.output[2], priv->buf->std.output[3]); - kfree(output.pointer); =20 return 0; } --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6278939A06B; Fri, 5 Jun 2026 18:15:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683302; cv=none; b=jPTE3g3qqKoA8m2huO3NVk5eTfBNfSlPtiVI/bLvoOnXC5wj2fL84SoKUWUpZYrfRjlyK6Ug3OZaCcrEOAOmi0hvdXKQjaw/mxyZVHIKa2o1b//+YrbzZNtHyUxJMS09VTXkSOM4XCseaAVNpyRXuXcPGPtJvE6IU4SWnhqVpc0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683302; c=relaxed/simple; bh=EVBbej8Iq9BR0HeCBJejx9a8VyQIX0Fp7xI0QQIiHxk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UIid7XI21/1shsXv2FEmJdHweIG/HbFQypu/5Ekl3blH1vmcYgiLn18uiJxED8Fp2zxtoXk2HHAmyXLq2A8sDlArRWk9ht1yXkJa3PP1TjKOXPCywNTMoHLc0vY2q7HEI8qIYhqDGVZh2z+oVw/4D6BSSD5Dito3/MstNLH7kmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=efDGRUPk; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="efDGRUPk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683282; x=1781288082; i=w_armin@gmx.de; bh=5DFmaNPGwgIZpM5YAFvuQe/ki93+zYJZXvag9YoTJjY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=efDGRUPkQeN5C3iypoqTjH8TU3r5QzOGCkNptVOsxEFSH/gV7TjoEGFnpNqnQ+mw WxExtpWEO3+vI4sYA6ctQpQldlVUTLcdGSNzDkUPBXqlWINTGpXPH0XMy6gDV+WXC 2PahPpGw1QoCia/CtHyp4UIuQuivcKRiNTNPdunBA4OCVhdTSUGyuEGUGxkjSHqmI tGTFDywaMae6G33s2slHBl6jE8NCwvor2+QU0b2u2u0VFQZr2KO/eyZdNTAZrvkWN pK0mpiXJf/RGyZTfQIN2YFztq3GsSWaE90mWkMvxShU9g46vTLJFi8mdsZMbkvOh6 Bgu1Ft/d9tOMMy3xWQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MzhnN-1xQg1T2g9B-010B83; Fri, 05 Jun 2026 20:14:42 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 4/9] platform/x86: dell-wmi-base: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 20:14:28 +0200 Message-Id: <20260605181433.188847-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:BcI2CXY4wVpifrxg5CYQgWZ7NQGRsvUzQ4UEVb+ikiQkrsVO/WH 6NzO4LtCNL36G2LAHMaE4XDbU4O/ma8XTAD04t5CSIvYwG+KvUYx+BfciMnKWdXr3tsDaXf MLVJ0NF/PhlglAogJ55m9sBDKSa3Gl0IfUrLwT4AvgCCF2AsTLk8LDmZ+zVyLj0Ny+uKCwm r6gNoBdaEdagnc8RSVL7Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:SHQNu05im9M=;ruB6Y7RzuTgITsMTQF/ouaxT/KF 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 RgVP7dAWuX15vt9IiMmyetI99JYhpiWhdU5hhXj Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for the event data. Signed-off-by: Armin Wolf --- drivers/platform/x86/dell/dell-wmi-base.c | 70 ++++++++++++----------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-base.c b/drivers/platform/x= 86/dell/dell-wmi-base.c index 2a5804efd3ea..1070df065807 100644 --- a/drivers/platform/x86/dell/dell-wmi-base.c +++ b/drivers/platform/x86/dell/dell-wmi-base.c @@ -13,6 +13,7 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 +#include #include #include #include @@ -414,7 +415,8 @@ static void dell_wmi_switch_event(struct input_dev **su= bdev, input_sync(*subdev); } =20 -static int dell_wmi_process_key(struct wmi_device *wdev, int type, int cod= e, u16 *buffer, int remaining) +static int dell_wmi_process_key(struct wmi_device *wdev, int type, int cod= e, __le16 *buffer, + int remaining) { struct dell_wmi_priv *priv =3D dev_get_drvdata(&wdev->dev); const struct key_entry *key; @@ -446,15 +448,15 @@ static int dell_wmi_process_key(struct wmi_device *wd= ev, int type, int code, u16 } else if (type =3D=3D 0x0011 && code =3D=3D 0xe070 && remaining > 0) { dell_wmi_switch_event(&priv->tabletswitch_dev, "Dell tablet mode switch", - SW_TABLET_MODE, !buffer[0]); + SW_TABLET_MODE, !le16_to_cpu(buffer[0])); return 1; } else if (type =3D=3D 0x0012 && code =3D=3D 0x000c && remaining > 0) { /* Eprivacy toggle, switch to "on" key entry for on events */ - if (buffer[0] =3D=3D 2) + if (le16_to_cpu(buffer[0]) =3D=3D 2) key++; used =3D 1; } else if (type =3D=3D 0x0012 && code =3D=3D 0x000d && remaining > 0) { - value =3D (buffer[2] =3D=3D 2); + value =3D (le16_to_cpu(buffer[2]) =3D=3D 2); used =3D 1; } =20 @@ -463,24 +465,17 @@ static int dell_wmi_process_key(struct wmi_device *wd= ev, int type, int code, u16 return used; } =20 -static void dell_wmi_notify(struct wmi_device *wdev, - union acpi_object *obj) +static void dell_wmi_notify(struct wmi_device *wdev, const struct wmi_buff= er *buffer) { struct dell_wmi_priv *priv =3D dev_get_drvdata(&wdev->dev); - u16 *buffer_entry, *buffer_end; - acpi_size buffer_size; + __le16 *buffer_entry, *buffer_end; + size_t buffer_size; int len, i; =20 - if (obj->type !=3D ACPI_TYPE_BUFFER) { - pr_warn("bad response type %x\n", obj->type); - return; - } + pr_debug("Received WMI event (%*ph)\n", (int)buffer->length, buffer->data= ); =20 - pr_debug("Received WMI event (%*ph)\n", - obj->buffer.length, obj->buffer.pointer); - - buffer_entry =3D (u16 *)obj->buffer.pointer; - buffer_size =3D obj->buffer.length/2; + buffer_entry =3D buffer->data; + buffer_size =3D buffer->length / 2; buffer_end =3D buffer_entry + buffer_size; =20 /* @@ -496,12 +491,12 @@ static void dell_wmi_notify(struct wmi_device *wdev, * one event on devices with WMI interface version 0. */ if (priv->interface_version =3D=3D 0 && buffer_entry < buffer_end) - if (buffer_end > buffer_entry + buffer_entry[0] + 1) - buffer_end =3D buffer_entry + buffer_entry[0] + 1; + if (buffer_end > buffer_entry + le16_to_cpu(buffer_entry[0]) + 1) + buffer_end =3D buffer_entry + le16_to_cpu(buffer_entry[0]) + 1; =20 while (buffer_entry < buffer_end) { =20 - len =3D buffer_entry[0]; + len =3D le16_to_cpu(buffer_entry[0]); if (len =3D=3D 0) break; =20 @@ -514,11 +509,11 @@ static void dell_wmi_notify(struct wmi_device *wdev, =20 pr_debug("Process buffer (%*ph)\n", len*2, buffer_entry); =20 - switch (buffer_entry[1]) { + switch (le16_to_cpu(buffer_entry[1])) { case 0x0000: /* One key pressed or event occurred */ if (len > 2) - dell_wmi_process_key(wdev, buffer_entry[1], - buffer_entry[2], + dell_wmi_process_key(wdev, le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[2]), buffer_entry + 3, len - 3); /* Extended data is currently ignored */ @@ -526,22 +521,29 @@ static void dell_wmi_notify(struct wmi_device *wdev, case 0x0010: /* Sequence of keys pressed */ case 0x0011: /* Sequence of events occurred */ for (i =3D 2; i < len; ++i) - i +=3D dell_wmi_process_key(wdev, buffer_entry[1], - buffer_entry[i], + i +=3D dell_wmi_process_key(wdev, le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[i]), buffer_entry + i, len - i - 1); break; case 0x0012: - if ((len > 4) && dell_privacy_process_event(buffer_entry[1], buffer_ent= ry[3], - buffer_entry[4])) - /* dell_privacy_process_event has handled the event */; - else if (len > 2) - dell_wmi_process_key(wdev, buffer_entry[1], buffer_entry[2], + if (len > 4) { + if (dell_privacy_process_event(le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[3]), + le16_to_cpu(buffer_entry[4]))) + break; + } + + /* dell_privacy_process_event has not handled the event */ + + if (len > 2) + dell_wmi_process_key(wdev, le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[2]), buffer_entry + 3, len - 3); + break; default: /* Unknown event */ - pr_info("Unknown WMI event type 0x%x\n", - (int)buffer_entry[1]); + pr_info("Unknown WMI event type 0x%x\n", le16_to_cpu(buffer_entry[1])); break; } =20 @@ -825,10 +827,10 @@ static struct wmi_driver dell_wmi_driver =3D { .name =3D "dell-wmi", }, .id_table =3D dell_wmi_id_table, - .min_event_size =3D sizeof(u16), + .min_event_size =3D sizeof(__le16), .probe =3D dell_wmi_probe, .remove =3D dell_wmi_remove, - .notify =3D dell_wmi_notify, + .notify_new =3D dell_wmi_notify, }; =20 static int __init dell_wmi_init(void) --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5447D3B19A8; Fri, 5 Jun 2026 18:15:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683307; cv=none; b=o1HztSbi7A942bprlrl6mns0qrSRkUmWmx9Ebi+B2h5KhgIQi8QNpe6Fc0eAtOn/bbyXnsauWgW2DKgfxBbm4pr7u/XtPtJwQO1HIsNkfsPV5ZdObF7tEcLw45c46+KRZXgrebwpPP9NunkeRvwhczGD70Cukhz8ysgYXXVD6nk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683307; c=relaxed/simple; bh=3/YzKk5yd5e1YsG8VVvxYHpW6mg8qMfhG9Pzjjt2+Ns=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aJPDpW9nb5tSBpvb+vKvtrmP+l4zj3wFg4qo0FXQcrGf18VxcnmLMV7QZwuLoWbFVzZodxRhgtLT9j/VItuEVIGwrdgO092jf8Jv9syAyE4xvMExthQiKB1BhX69KgH6gjHX/RLrIHiocA81esTW6H2SJ4eqOUycKNBzaD3hMb8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=AJAmu6Cm; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="AJAmu6Cm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683283; x=1781288083; i=w_armin@gmx.de; bh=/VEsNeFCmDb3E2D6re555W182LKIUUc5SgS8t8OYxeg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=AJAmu6Cm0SMB2KWJ8nyJgHuvH5WQ8tDyTDSN5ohb//vSSu4vAUpo5npr7lU8EFFB HwnbltF26ts/vhISQPJzXVnWJsywnsCof+kLDgZkNphio9zYbqrmvUibt16YFxVQe yDe9/QJX19rD6Eo9HRM8JO1A/CnyceqpcOXxfkVm1sNV+2dyqfBWZno03eGBTvIaH xKMBfcwlNT0nNgZMWY4uyhQLopDiyqRIaIZun8CgUqB6taZgryIN0oUwyvWgBmqnu JJIUqVcr/DqZOKpnYkx5SqCXbLq8MoVPMPvHaxOl59F5dVTSLbpHOY9Bc7G5lmmIL gbH5rujedSBvwMEsjA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M5fIQ-1wbbTN25fe-00BVHP; Fri, 05 Jun 2026 20:14:43 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 5/9] platform/x86: dell-ddv: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 20:14:29 +0200 Message-Id: <20260605181433.188847-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ylEnwKu3sfX4lFxpfWX4g60haLt/wD3iqnYbYKM0YAlupSsRI6h AIEWRLzYTcF3HDk2h2asPSFxNxNRpgZ5VUmM9ikhs4IOQ+xAiwWV6KSXBsgjfEDoIjPb9o9 ViDRRanHY9PGj0TFSKDi31N+oFaZTMK76570dzQm818Ws/hZsHcnr6FgtM3PfkHi0A0i4Su NIxwUKJ1P+inn+cukl7nQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:NyIO6maXueE=;U2edmAnsg0lbAMgRVXvOF2JSshN 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 Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI intergers/strings/packages for exchanging data. Signed-off-by: Armin Wolf --- drivers/platform/x86/dell/dell-wmi-ddv.c | 181 +++++++++++------------ 1 file changed, 86 insertions(+), 95 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-ddv.c b/drivers/platform/x8= 6/dell/dell-wmi-ddv.c index 62e3d060f038..c2120d8ae298 100644 --- a/drivers/platform/x86/dell/dell-wmi-ddv.c +++ b/drivers/platform/x86/dell/dell-wmi-ddv.c @@ -7,8 +7,9 @@ =20 #define pr_format(fmt) KBUILD_MODNAME ": " fmt =20 -#include #include +#include +#include #include #include #include @@ -99,6 +100,11 @@ enum dell_ddv_method { DELL_DDV_THERMAL_SENSOR_INFORMATION =3D 0x22, }; =20 +struct dell_wmi_buffer { + __le32 raw_size; + u8 raw_data[]; +} __packed; + struct fan_sensor_entry { u8 type; __le16 rpm; @@ -126,7 +132,7 @@ struct dell_wmi_ddv_sensors { bool active; struct mutex lock; /* protect caching */ unsigned long timestamp; - union acpi_object *obj; + struct dell_wmi_buffer *buffer; u64 entries; }; =20 @@ -158,105 +164,96 @@ static const char * const fan_dock_labels[] =3D { "Docking Chipset Fan", }; =20 -static int dell_wmi_ddv_query_type(struct wmi_device *wdev, enum dell_ddv_= method method, u32 arg, - union acpi_object **result, acpi_object_type type) +static int dell_wmi_ddv_query(struct wmi_device *wdev, enum dell_ddv_metho= d method, u32 arg, + struct wmi_buffer *output, size_t min_size) { - struct acpi_buffer out =3D { ACPI_ALLOCATE_BUFFER, NULL }; - const struct acpi_buffer in =3D { - .length =3D sizeof(arg), - .pointer =3D &arg, + __le32 arg2 =3D cpu_to_le32(arg); + const struct wmi_buffer input =3D { + .length =3D sizeof(arg2), + .data =3D &arg2, }; - union acpi_object *obj; - acpi_status ret; - - ret =3D wmidev_evaluate_method(wdev, 0x0, method, &in, &out); - if (ACPI_FAILURE(ret)) - return -EIO; - - obj =3D out.pointer; - if (!obj) - return -ENODATA; - - if (obj->type !=3D type) { - kfree(obj); - return -ENOMSG; - } - - *result =3D obj; =20 - return 0; + return wmidev_invoke_method(wdev, 0x0, method, &input, output, min_size); } =20 static int dell_wmi_ddv_query_integer(struct wmi_device *wdev, enum dell_d= dv_method method, u32 arg, u32 *res) { - union acpi_object *obj; + __le32 *argr __free(kfree) =3D NULL; + struct wmi_buffer output; int ret; =20 - ret =3D dell_wmi_ddv_query_type(wdev, method, arg, &obj, ACPI_TYPE_INTEGE= R); + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(*argr)); if (ret < 0) return ret; =20 - if (obj->integer.value <=3D U32_MAX) - *res =3D (u32)obj->integer.value; - else - ret =3D -ERANGE; - - kfree(obj); + argr =3D output.data; + *res =3D le32_to_cpu(*argr); =20 - return ret; + return 0; } =20 static int dell_wmi_ddv_query_buffer(struct wmi_device *wdev, enum dell_dd= v_method method, - u32 arg, union acpi_object **result) + u32 arg, struct dell_wmi_buffer **result) { - union acpi_object *obj; - u64 buffer_size; + struct dell_wmi_buffer *buffer; + struct wmi_buffer output; + size_t buffer_size; int ret; =20 - ret =3D dell_wmi_ddv_query_type(wdev, method, arg, &obj, ACPI_TYPE_PACKAG= E); + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(*buffer)); if (ret < 0) return ret; =20 - if (obj->package.count !=3D 2 || - obj->package.elements[0].type !=3D ACPI_TYPE_INTEGER || - obj->package.elements[1].type !=3D ACPI_TYPE_BUFFER) { - ret =3D -ENOMSG; - - goto err_free; - } - - buffer_size =3D obj->package.elements[0].integer.value; - - if (!buffer_size) { + buffer =3D output.data; + if (!le32_to_cpu(buffer->raw_size)) { ret =3D -ENODATA; =20 goto err_free; } =20 - if (buffer_size > obj->package.elements[1].buffer.length) { + buffer_size =3D struct_size(buffer, raw_data, le32_to_cpu(buffer->raw_siz= e)); + if (buffer_size > output.length) { dev_warn(&wdev->dev, - FW_WARN "WMI buffer size (%llu) exceeds ACPI buffer size (%d)\n", - buffer_size, obj->package.elements[1].buffer.length); + FW_WARN "Dell WMI buffer size (%zu) exceeds WMI buffer size (%zu)\n", + buffer_size, output.length); ret =3D -EMSGSIZE; =20 goto err_free; } =20 - *result =3D obj; + *result =3D buffer; =20 return 0; =20 err_free: - kfree(obj); + kfree(output.data); =20 return ret; } =20 -static int dell_wmi_ddv_query_string(struct wmi_device *wdev, enum dell_dd= v_method method, - u32 arg, union acpi_object **result) +static ssize_t dell_wmi_ddv_query_string(struct wmi_device *wdev, enum del= l_ddv_method method, + u32 arg, char *buf, size_t length) { - return dell_wmi_ddv_query_type(wdev, method, arg, result, ACPI_TYPE_STRIN= G); + struct wmi_string *str __free(kfree) =3D NULL; + struct wmi_buffer output; + size_t str_size; + int ret; + + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(*str)); + if (ret < 0) + return ret; + + str =3D output.data; + str_size =3D sizeof(*str) + le16_to_cpu(str->length); + if (str_size > output.length) { + dev_warn(&wdev->dev, + FW_WARN "WMI string size (%zu) exceeds WMI buffer size (%zu)\n", + str_size, output.length); + return -EMSGSIZE; + } + + return wmi_string_to_utf8s(str, buf, length); } =20 /* @@ -265,28 +262,26 @@ static int dell_wmi_ddv_query_string(struct wmi_devic= e *wdev, enum dell_ddv_meth static int dell_wmi_ddv_update_sensors(struct wmi_device *wdev, enum dell_= ddv_method method, struct dell_wmi_ddv_sensors *sensors, size_t entry_size) { + struct dell_wmi_buffer *buffer; u64 buffer_size, rem, entries; - union acpi_object *obj; - u8 *buffer; int ret; =20 - if (sensors->obj) { + if (sensors->buffer) { if (time_before(jiffies, sensors->timestamp + HZ)) return 0; =20 - kfree(sensors->obj); - sensors->obj =3D NULL; + kfree(sensors->buffer); + sensors->buffer =3D NULL; } =20 - ret =3D dell_wmi_ddv_query_buffer(wdev, method, 0, &obj); + ret =3D dell_wmi_ddv_query_buffer(wdev, method, 0, &buffer); if (ret < 0) return ret; =20 /* buffer format sanity check */ - buffer_size =3D obj->package.elements[0].integer.value; - buffer =3D obj->package.elements[1].buffer.pointer; + buffer_size =3D le32_to_cpu(buffer->raw_size); entries =3D div64_u64_rem(buffer_size, entry_size, &rem); - if (rem !=3D 1 || buffer[buffer_size - 1] !=3D 0xff) { + if (rem !=3D 1 || buffer->raw_data[buffer_size - 1] !=3D 0xff) { ret =3D -ENOMSG; goto err_free; } @@ -296,14 +291,14 @@ static int dell_wmi_ddv_update_sensors(struct wmi_dev= ice *wdev, enum dell_ddv_me goto err_free; } =20 - sensors->obj =3D obj; + sensors->buffer =3D buffer; sensors->entries =3D entries; sensors->timestamp =3D jiffies; =20 return 0; =20 err_free: - kfree(obj); + kfree(buffer); =20 return ret; } @@ -328,7 +323,7 @@ static int dell_wmi_ddv_fan_read_channel(struct dell_wm= i_ddv_data *data, u32 att if (channel >=3D data->fans.entries) return -ENXIO; =20 - entry =3D (struct fan_sensor_entry *)data->fans.obj->package.elements[1].= buffer.pointer; + entry =3D (struct fan_sensor_entry *)data->fans.buffer->raw_data; switch (attr) { case hwmon_fan_input: *val =3D get_unaligned_le16(&entry[channel].rpm); @@ -354,7 +349,7 @@ static int dell_wmi_ddv_temp_read_channel(struct dell_w= mi_ddv_data *data, u32 at if (channel >=3D data->temps.entries) return -ENXIO; =20 - entry =3D (struct thermal_sensor_entry *)data->temps.obj->package.element= s[1].buffer.pointer; + entry =3D (struct thermal_sensor_entry *)data->temps.buffer->raw_data; switch (attr) { case hwmon_temp_input: *val =3D entry[channel].now * 1000; @@ -411,7 +406,7 @@ static int dell_wmi_ddv_fan_read_string(struct dell_wmi= _ddv_data *data, int chan if (channel >=3D data->fans.entries) return -ENXIO; =20 - entry =3D (struct fan_sensor_entry *)data->fans.obj->package.elements[1].= buffer.pointer; + entry =3D (struct fan_sensor_entry *)data->fans.buffer->raw_data; type =3D entry[channel].type; switch (type) { case 0x00 ... 0x07: @@ -442,7 +437,7 @@ static int dell_wmi_ddv_temp_read_string(struct dell_wm= i_ddv_data *data, int cha if (channel >=3D data->temps.entries) return -ENXIO; =20 - entry =3D (struct thermal_sensor_entry *)data->temps.obj->package.element= s[1].buffer.pointer; + entry =3D (struct thermal_sensor_entry *)data->temps.buffer->raw_data; switch (entry[channel].type) { case 0x00: *str =3D "CPU"; @@ -553,8 +548,8 @@ static void dell_wmi_ddv_hwmon_cache_invalidate(struct = dell_wmi_ddv_sensors *sen return; =20 mutex_lock(&sensors->lock); - kfree(sensors->obj); - sensors->obj =3D NULL; + kfree(sensors->buffer); + sensors->buffer =3D NULL; mutex_unlock(&sensors->lock); } =20 @@ -564,7 +559,7 @@ static void dell_wmi_ddv_hwmon_cache_destroy(void *data) =20 sensors->active =3D false; mutex_destroy(&sensors->lock); - kfree(sensors->obj); + kfree(sensors->buffer); } =20 static struct hwmon_channel_info *dell_wmi_ddv_channel_init(struct wmi_dev= ice *wdev, @@ -750,7 +745,7 @@ static void dell_wmi_battery_invalidate(struct dell_wmi= _ddv_data *data, static ssize_t eppid_show(struct device *dev, struct device_attribute *att= r, char *buf) { struct dell_wmi_ddv_data *data =3D container_of(attr, struct dell_wmi_ddv= _data, eppid_attr); - union acpi_object *obj; + ssize_t count; u32 index; int ret; =20 @@ -758,19 +753,19 @@ static ssize_t eppid_show(struct device *dev, struct = device_attribute *attr, cha if (ret < 0) return ret; =20 - ret =3D dell_wmi_ddv_query_string(data->wdev, DELL_DDV_BATTERY_EPPID, ind= ex, &obj); - if (ret < 0) - return ret; - - if (obj->string.length !=3D DELL_EPPID_LENGTH && obj->string.length !=3D = DELL_EPPID_EXT_LENGTH) - dev_info_once(&data->wdev->dev, FW_INFO "Suspicious ePPID length (%d)\n", - obj->string.length); + count =3D dell_wmi_ddv_query_string(data->wdev, DELL_DDV_BATTERY_EPPID, i= ndex, buf, + PAGE_SIZE); + if (count < 0) + return count; =20 - ret =3D sysfs_emit(buf, "%s\n", obj->string.pointer); + if (count !=3D DELL_EPPID_LENGTH && count !=3D DELL_EPPID_EXT_LENGTH) + dev_info_once(&data->wdev->dev, FW_INFO "Suspicious ePPID length (%zd)\n= ", count); =20 - kfree(obj); + ret =3D sysfs_emit_at(buf, count, "\n"); + if (ret < 0) + return ret; =20 - return ret; + return count + ret; } =20 static int dell_wmi_ddv_get_health(struct dell_wmi_ddv_data *data, u32 ind= ex, @@ -994,19 +989,15 @@ static int dell_wmi_ddv_buffer_read(struct seq_file *= seq, enum dell_ddv_method m { struct device *dev =3D seq->private; struct dell_wmi_ddv_data *data =3D dev_get_drvdata(dev); - union acpi_object *obj; - u64 size; - u8 *buf; + struct dell_wmi_buffer *buffer; int ret; =20 - ret =3D dell_wmi_ddv_query_buffer(data->wdev, method, 0, &obj); + ret =3D dell_wmi_ddv_query_buffer(data->wdev, method, 0, &buffer); if (ret < 0) return ret; =20 - size =3D obj->package.elements[0].integer.value; - buf =3D obj->package.elements[1].buffer.pointer; - ret =3D seq_write(seq, buf, size); - kfree(obj); + ret =3D seq_write(seq, buffer->raw_data, le32_to_cpu(buffer->raw_size)); + kfree(buffer); =20 return ret; } --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 71C3E37C925; Fri, 5 Jun 2026 18:14:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683295; cv=none; b=ZLwFy0kdsUZOd6meoYtzhKGexNNp3LZQwqvQihFazHhH/rM5LdBb4K6kXBANRrYvgLSOlwAmfWgKYEmoRzYLTLLT82REriKFesi+52XVh6STALUFncYaQVIg5fN5ixOnGBuUz/JpxfEczDWLtDz4725pGvcMEuIjAn6kokkrK6M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683295; c=relaxed/simple; bh=R6jhKSw7Ls4wRvv6hDd9DjiWqFzo3e+NJRmJOli2NOA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uirjv8DEnHfecMfsHg9Xywpx+tZdSMcPtkEBAv3JMee7SSL/ai4abj79ceXm7i9HY3nK1m2Zd5qdX9ufJOD200ihlb2089/V8rtBY2K1taLQLmwN07nxc/mKnL7mPMSzK6kpmBhWAqbCR3nxswxLBhRUVeEy0bo/z8PuC0Uw6Dw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=qH7u6tih; arc=none smtp.client-ip=212.227.17.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="qH7u6tih" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683284; x=1781288084; i=w_armin@gmx.de; bh=JtHTJa+SmQgI1Ow1Wew6FmetXK04z+gNCABL0Ss/1BU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=qH7u6tihZVD3Pwku5TvhkBI8pgA8t+ZlD/ujXbgaKZmue8sGO5BNdZRn5XXqj/po 4N+YNpcdXBJ9a1geQomR459STUY46YNOzm4E6FeUhbNqo9AOh+yx4ETqz+3GzXgpl p+p9KsA5uQ0k4Xei1tKaoxadxZEGpe+0Rlinelwu6vIfJw1j9hmRJLYagu6lPxUBz Z8hpmmJd4uI8fAaC1gTR1KRiSstFrSsahMxZAPMO7e0SvDoxrY5dSYn415P28pcad 2hvY4/IZeCVl+9N7+HmBKYWgeLlWu6LHYrHWJBNZAROcNi5xqPIXYHG7ujQVFPLdP Aegkmf2v2DvxI59lEA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MPogF-1wqmyV1VFz-00Sgse; Fri, 05 Jun 2026 20:14:44 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 6/9] hwmon: (dell-smm) Use new buffer-based WMI API Date: Fri, 5 Jun 2026 20:14:30 +0200 Message-Id: <20260605181433.188847-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Wozw98zJIqzlDdmOxa93rtOWsBFY9h4D+MHL55bSjOfXS3nU4kX L4F/tk6+Q9G1Wt92rrHZtByn+H1wO6Pj2YtAI6Dbl1dc5CSuhhFF5tuH0qdVfrOcwVLwT1n szXxQbL8UHCk/mQe710tJosoEPT3qfx/xDDXy1Tvgfsy+UeRd5XsJsFU/22S1VwkJMjldja nLxYV7WQiqeSRzXVOoizg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:tRoErE8aHkE=;ZHL3PA5HWwX6alzwcqVPIiPbGMX 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 Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for returning the results of a SMM call. Acked-by: Guenter Roeck Signed-off-by: Armin Wolf --- drivers/hwmon/dell-smm-hwmon.c | 47 ++++++++++++---------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index 038edffc1ac7..0dbee562220b 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c @@ -12,8 +12,9 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include #include +#include #include #include #include @@ -36,10 +37,10 @@ #include #include #include +#include #include =20 #include -#include =20 #define I8K_SMM_FN_STATUS 0x0025 #define I8K_SMM_POWER_STATUS 0x0069 @@ -232,7 +233,7 @@ static const struct dell_smm_ops i8k_smm_ops =3D { /* * Call the System Management Mode BIOS over WMI. */ -static ssize_t wmi_parse_register(u8 *buffer, u32 length, unsigned int *re= g) +static ssize_t wmi_parse_register(u8 *buffer, size_t length, unsigned int = *reg) { __le32 value; u32 reg_size; @@ -253,7 +254,7 @@ static ssize_t wmi_parse_register(u8 *buffer, u32 lengt= h, unsigned int *reg) return reg_size + sizeof(reg_size); } =20 -static int wmi_parse_response(u8 *buffer, u32 length, struct smm_regs *reg= s) +static int wmi_parse_response(u8 *buffer, size_t length, struct smm_regs *= regs) { unsigned int *registers[] =3D { ®s->eax, @@ -261,7 +262,7 @@ static int wmi_parse_response(u8 *buffer, u32 length, s= truct smm_regs *regs) ®s->ecx, ®s->edx }; - u32 offset =3D 0; + size_t offset =3D 0; ssize_t ret; int i; =20 @@ -273,19 +274,16 @@ static int wmi_parse_response(u8 *buffer, u32 length,= struct smm_regs *regs) if (ret < 0) return ret; =20 - offset +=3D ret; + /* WMI aligns u32 integers on a 4 byte boundary */ + offset =3D ALIGN(offset + ret, 4); } =20 - if (offset !=3D length) - return -ENOMSG; - return 0; } =20 static int wmi_smm_call(struct device *dev, struct smm_regs *regs) { struct wmi_device *wdev =3D container_of(dev, struct wmi_device, dev); - struct acpi_buffer out =3D { ACPI_ALLOCATE_BUFFER, NULL }; u32 wmi_payload[] =3D { sizeof(regs->eax), regs->eax, @@ -296,32 +294,19 @@ static int wmi_smm_call(struct device *dev, struct sm= m_regs *regs) sizeof(regs->edx), regs->edx }; - const struct acpi_buffer in =3D { + const struct wmi_buffer in =3D { .length =3D sizeof(wmi_payload), - .pointer =3D &wmi_payload, + .data =3D &wmi_payload, }; - union acpi_object *obj; - acpi_status status; + struct wmi_buffer out; int ret; =20 - status =3D wmidev_evaluate_method(wdev, 0x0, DELL_SMM_LEGACY_EXECUTE, &in= , &out); - if (ACPI_FAILURE(status)) - return -EIO; - - obj =3D out.pointer; - if (!obj) - return -ENODATA; - - if (obj->type !=3D ACPI_TYPE_BUFFER) { - ret =3D -ENOMSG; - - goto err_free; - } - - ret =3D wmi_parse_response(obj->buffer.pointer, obj->buffer.length, regs); + ret =3D wmidev_invoke_method(wdev, 0x0, DELL_SMM_LEGACY_EXECUTE, &in, &ou= t, sizeof(__le32)); + if (ret < 0) + return ret; =20 -err_free: - kfree(obj); + ret =3D wmi_parse_response(out.data, out.length, regs); + kfree(out.data); =20 return ret; } --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 122EC33ADB1; Fri, 5 Jun 2026 18:15:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683312; cv=none; b=hW1p/gspVZkNlOdV/HZSHsqBVIaOkkgOU7V7CsKCIhq5XHL7sw9ykhfT9waIzO23r+Jqhy8fICRXzLpAK4DpC6pU3iu3ylRJXU5al6qBE6f3nf8gz1MI3bBJUV6q31eQDOR+R2FKpJJKZggY7GMkwEWqpXRGRFdIIiVLcyB5U0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683312; c=relaxed/simple; bh=nLtcvkhpSXkEvlXiy2pD63CXTukW1mVtLyB3M5nFgUw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Us79Tweivxd25DNvdq54Mg8duqAHfE5KDqlml+6BqtQUS4mQSZznCoPHW/KB/wehZphQ8BbgKSbQi4pUbhEbRDPF4AvdjjIgquBLeLaUFo3Q5Ha/KduxKG1JRvyf8uIOeO3kbp+PdtFnSwt1Q5jOC/m1SSqdT4ao34wXyCjmpz4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=TyATYreW; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="TyATYreW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683285; x=1781288085; i=w_armin@gmx.de; bh=fdOoZ8WmHvqJCglSFIUvvsAHkg44uZt705ch+vDqRiM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=TyATYreWGZsKm/BIPXOCoeXb3YMiwKiCYivr0ODPAPEwvdWeV+/CI10XFi5y+4LR QUeH7SzdR6lQFy/ZwDc+hMVoe26M9Kl1e8cy9bRBV4vsvIOIXJJERaGHkpxgY8Smf OPGQqAKq45/OfeLiCyx0VoN2VrfgwxiXHqJJPJkaGDjnLhLytxPIqi1KxhDsHJALP z/7WF2x+PmcQtL6VtKZKd4HBQTNi9xbTomC3062/0UgQXjBg0lFAf4AAidDWUIFPx bOmHyKBLpWNp9pTjMY+quX72lZBuQsiZY/sapNilYHgSTIhmETgBVbxDhLrP2JaCZ qjbo8xYRY6YEYG4G3w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MirjY-1xAO3d0JYC-00k1CL; Fri, 05 Jun 2026 20:14:45 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 7/9] platform/wmi: Make wmi_bus_class const Date: Fri, 5 Jun 2026 20:14:31 +0200 Message-Id: <20260605181433.188847-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:VfvgwnmxN4mPeDShLbRzafixJfpqADKGxe7UvumPyoWVLAbWaEU iX7zAu7QiXy8I1PpNz8JrIa0Uzrre7Jzq5vqwipA0MQrA1FElaPC86luree3fQx6mFUClp4 x+agpBVdXeol9imKwpEieFCaPV91KGEq5usucxWQ9VhcFww1JaU8D3C2FkUV9+x4RUT4t+N APN8HWy5VVAquYDfZ94VA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:vYUJvmqo8c0=;u4HqwTLXhx0e0dblEkhaT/dLOpN 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 Content-Type: text/plain; charset="utf-8" The functions class_register()/_unregister() and device_create() both support taking a const pointer to the class struct. Use this to mark wmi_bus_class as const so that it can be placed into read-only memory for better security. Signed-off-by: Armin Wolf --- drivers/platform/wmi/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/wmi/core.c b/drivers/platform/wmi/core.c index 5a2ffcbab6af..0782ebc33c00 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -1088,7 +1088,7 @@ static void wmi_dev_shutdown(struct device *dev) } } =20 -static struct class wmi_bus_class =3D { +static const struct class wmi_bus_class =3D { .name =3D "wmi_bus", }; =20 --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 826CF397E8A; Fri, 5 Jun 2026 18:14:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683296; cv=none; b=HKAavLQCmvKpjwJJRqzHkPND+rtQ+ez3k0tMSvu0XoQ2x7B4rrGGRA+dRCbRYiQMZmQHUEGZBnQtBF+7CLZtJzaQkca8QH1/9wG3EueALH6hPiAwffNdRLg8B5mnq1mDkZ/C85QHt1djHBMKJvRK6XKFIn7t4aTe7M2l26TlDmg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683296; c=relaxed/simple; bh=sfhyhAr6Z1fCYegaDc1uMzq6JQrVDvMEKBIFYmzuNlo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FywLQXlgVtI45/CLhqeT+3chQUVwdtiM9LkKO8Gk465LWG+89y/M3T6m9slxy1hqiKhpEpMmdTltQk9ck2Z9pvYGksYvPRA2RRWczsVi0F/4XfSCS8K7V08tw2HbkabXVpL8duxSqjliYs4PKxACG26Mzz2izL13hSZUSlI7pkA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=gcS1SrGs; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="gcS1SrGs" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683286; x=1781288086; i=w_armin@gmx.de; bh=rlTaw9B3AUeB15wt1JCDtmJ4GEA7e5Z/Mss93u9vxvs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=gcS1SrGsCxhrPMhjQkURzsq0REUj8NwJtNvFShZuLsiAX5KszXKkHQJoKQeUFT+4 RS1dsRwbVKCCDdoIlB9PjcsuHNJ8TcGhf2xbnP+wa734DPchvd8I4FFA8RxXUTaVZ LUv6aLdjrikVzI2p+JtREG8FTtNbsPYInHs66MFBc6SqCMAlVZCivcBO1+AzKfvd7 +ey2X+vn4twtfomE20LtMnbVkIqB6CDnCfnu0YUN/JVi9d5+/U+7dv/r0Sg2MzIVg uX4biSFHI/hlIFKXL/y2rcnsUkoTM9YEFWVMQIINxCOcv3qhdMs8G6FT1z5w65to5 eK4/wzSyy+oSlgcJ6Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MZTmY-1wjOzb44dK-00JAgg; Fri, 05 Jun 2026 20:14:46 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 8/9] platform/wmi: Make sysfs attributes const Date: Fri, 5 Jun 2026 20:14:32 +0200 Message-Id: <20260605181433.188847-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Yk+HdIEmEqjYwY1F2d+pcHBkMGexe34LrXtoY1U3fmzy88a10Qs eLNzB1yEgFcDDXtaZk0hslBaGR2WnBGYiHn/KskoSrVuJ8iaJ3HpsorNtyCzuOi4O/ArpVl vGjZEabV08zYI2P/CoVGQ55UNxPTD6dAhvvQkT6A8NJvyL/iCLmUOBRJ1/B2K8isTRhXVug 05m8Qe2SAkx/+qrp9pIPQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:yUeyZq7OEi4=;Qt4U8c/LL1XQ7Fh9iYGgUnUA/Ic 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 Content-Type: text/plain; charset="utf-8" The sysfs core supports const attributes. Use this to mark all sysfs attributes as const so that they can be placed into read-only memory for better security. Signed-off-by: Armin Wolf --- drivers/platform/wmi/core.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/platform/wmi/core.c b/drivers/platform/wmi/core.c index 0782ebc33c00..529825dcfbfe 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -858,7 +858,8 @@ static ssize_t modalias_show(struct device *dev, struct= device_attribute *attr, =20 return sysfs_emit(buf, "wmi:%pUL\n", &wblock->gblock.guid); } -static DEVICE_ATTR_RO(modalias); + +static const DEVICE_ATTR_RO(modalias); =20 static ssize_t guid_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -867,7 +868,8 @@ static ssize_t guid_show(struct device *dev, struct dev= ice_attribute *attr, =20 return sysfs_emit(buf, "%pUL\n", &wblock->gblock.guid); } -static DEVICE_ATTR_RO(guid); + +static const DEVICE_ATTR_RO(guid); =20 static ssize_t instance_count_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -876,7 +878,8 @@ static ssize_t instance_count_show(struct device *dev, =20 return sysfs_emit(buf, "%d\n", (int)wblock->gblock.instance_count); } -static DEVICE_ATTR_RO(instance_count); + +static const DEVICE_ATTR_RO(instance_count); =20 static ssize_t expensive_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -886,9 +889,10 @@ static ssize_t expensive_show(struct device *dev, return sysfs_emit(buf, "%d\n", (wblock->gblock.flags & ACPI_WMI_EXPENSIVE) !=3D 0); } -static DEVICE_ATTR_RO(expensive); =20 -static struct attribute *wmi_attrs[] =3D { +static const DEVICE_ATTR_RO(expensive); + +static const struct attribute * const wmi_attrs[] =3D { &dev_attr_modalias.attr, &dev_attr_guid.attr, &dev_attr_instance_count.attr, @@ -904,9 +908,10 @@ static ssize_t notify_id_show(struct device *dev, stru= ct device_attribute *attr, =20 return sysfs_emit(buf, "%02X\n", (unsigned int)wblock->gblock.notify_id); } -static DEVICE_ATTR_RO(notify_id); =20 -static struct attribute *wmi_event_attrs[] =3D { +static const DEVICE_ATTR_RO(notify_id); + +static const struct attribute * const wmi_event_attrs[] =3D { &dev_attr_notify_id.attr, NULL }; @@ -920,7 +925,8 @@ static ssize_t object_id_show(struct device *dev, struc= t device_attribute *attr, return sysfs_emit(buf, "%c%c\n", wblock->gblock.object_id[0], wblock->gblock.object_id[1]); } -static DEVICE_ATTR_RO(object_id); + +static const DEVICE_ATTR_RO(object_id); =20 static ssize_t setable_show(struct device *dev, struct device_attribute *a= ttr, char *buf) @@ -929,16 +935,17 @@ static ssize_t setable_show(struct device *dev, struc= t device_attribute *attr, =20 return sysfs_emit(buf, "%d\n", (int)wdev->setable); } -static DEVICE_ATTR_RO(setable); =20 -static struct attribute *wmi_data_attrs[] =3D { +static const DEVICE_ATTR_RO(setable); + +static const struct attribute * const wmi_data_attrs[] =3D { &dev_attr_object_id.attr, &dev_attr_setable.attr, NULL }; ATTRIBUTE_GROUPS(wmi_data); =20 -static struct attribute *wmi_method_attrs[] =3D { +static const struct attribute * const wmi_method_attrs[] =3D { &dev_attr_object_id.attr, NULL }; --=20 2.39.5 From nobody Mon Jun 8 05:27:34 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1FA413B42EB; Fri, 5 Jun 2026 18:15:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683313; cv=none; b=FlopzfoqBSOpXLmgXmdIuYb4rTQ2p8TVrBDOyt00GbpgjCmt6QkPl1qkyYB1o/cHa2cQhhejc8f7DjvS7pByNkar42i+ORVPYEo5gqy+oNRMcWypdfpxH7+cjzZYAEe9aDIt68mZ/VNR1M+uvZXIOkAIASPo850RW7HubnA+DZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780683313; c=relaxed/simple; bh=xiMMiR9DQf/tWBjhVfGlftQFfGRRAKBqYvFODTT4jA8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oDnhDfdV4xTcDm+3Dq+1mppi57ulg6lQnVh2wIaTtT09fZ3/y9h76dvRTHd1ouQCreg4Jhv0upt7UIq79MCnhDt+5CqSGhPro6f0OLSWb/Kofd+kTy3it9CuIqB5X3rkUUEwDjoC8paTA9NSGDU3NycogWUnsGrkwC25186V5QU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=eY3yi0uA; arc=none smtp.client-ip=212.227.17.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="eY3yi0uA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780683287; x=1781288087; i=w_armin@gmx.de; bh=YfeRLIATGWvAfNsgyiHcEHpJ2mxRTbC9ci0nIWnnk90=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=eY3yi0uAoNMnY814yz/NVmcBP4fNjWSf3bolvEeJGWElpvpGx0QWS6CJcPlFwWVJ sUhgyJAgL7mmjJTosistoiWWHAdnul/dqTW4skjbImf6/i80JYGLdQVjFPzaCbFvm ID0klR2hqyfqLiDy+UO7504Mty9ZlkvLtL6B1PRjRnwEoJ4oVC9j0o4b/p4Z6CrVJ EJ5IoHB1vcGzN9ybKcGNfRsH7I1vsxQmZMW4d6fAm/nIkHIgS7l8iuFisnNg5b04J yV29Lt5zC+17KvwYDiVfs3j5KIkbNZKzP7nBf6h+0kTC6Rz/rBTJSBLVGi9O4XgOY keSTFoTAQsHAk0pj5w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1fmq-1xG0nG3c5o-00wHBl; Fri, 05 Jun 2026 20:14:46 +0200 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, 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, mario.limonciello@amd.com Subject: [PATCH v4 9/9] modpost: Handle malformed WMI GUID strings Date: Fri, 5 Jun 2026 20:14:33 +0200 Message-Id: <20260605181433.188847-10-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605181433.188847-1-W_Armin@gmx.de> References: <20260605181433.188847-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:uCxzTofn4Zu2EWwQCRx78X6Cl3jOqn8PI7u542+4pzp9F3V2sH0 bl1A5qp1XtYHWFYwU7/HeXU61OL9KHZpgzlsI88vITftRPHJh9kl2UjLap5th7+NVXddO4L yGrmc1dLK1XW/rv2efjtr3A3CK2f4eYFTOEqBkev6bZiLBZItJlsvX0+RY51SwgrJNfCLNk 9xRKFX5cqnOq+LHL+eexw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/YgkSDc1NTc=;0a00HNpCSeFv2+MDC3CKSBO97t5 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 Content-Type: text/plain; charset="utf-8" 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 --- .../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 387f508d57ad..6290c448f5e7 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 tabl= e: :: =20 static const struct wmi_device_id foo_id_table[] =3D { - /* 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 *sy= mval) 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; =20 if (strlen(*guid_string) !=3D 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 *s= ymval) return; } =20 - module_alias_printf(mod, false, WMI_MODULE_PREFIX "%s", *guid_string); + for (i =3D 0; i < UUID_STRING_LEN; i++) { + char value =3D (*guid_string)[i]; + bool valid =3D false; + + if (i =3D=3D 8 || i =3D=3D 13 || i =3D=3D 18 || i =3D=3D 23) { + if (value =3D=3D '-') + valid =3D true; + } else { + if (isxdigit(value)) + valid =3D 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] =3D toupper(value); + } + + result[i] =3D '\0'; + + module_alias_printf(mod, false, WMI_MODULE_PREFIX "%s", result); } =20 /* Looks like: mhi:S */ --=20 2.39.5