From nobody Thu Apr 9 14:10:28 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 0D7AB1DF73A; Sun, 8 Mar 2026 00:25:45 +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=1772929548; cv=none; b=lAr4nY9l7q2voUo4te44T6medgI3RJPI/GPIkNUtLD2fryK04sMO+pBOtNKqiR2xyeSjgADzRhSHVel+cihcuGXr6gBG67SRyyvjM+BfUHgE1FB67Pp8Rpc6hwlUY8tsN0RPcbd8wv8LjhNv/DQUVW/czVyx9UaDdVzVj9/zjHU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929548; c=relaxed/simple; bh=adn3OUAB5U86bg/NTahLF+r6ztrkL0f+31fxu2dWfCo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VfwpoFu/HW3GJLhIKcqRNhAYA1Wp+zt7sMQLqdAbWmuvn80AdISxSKQqvBUsQFcRnu/fZWrnra3hKXoQ4Nhywvl9+07MNjc/l7P9HsYfsxpoGkMz1qXVP+ahsGrDMT0e2+We+If3fkFj3a2xRh441oXhOODj18M2SvyvLTPI7N4= 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=bjISk1Sv; 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="bjISk1Sv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929529; x=1773534329; i=w_armin@gmx.de; bh=Io0HSqt2VkFLGBxEHSKoN7vk9tMBmQLErL/85dz1VI0=; 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=bjISk1SvMbsMmElC4Uh5mNMe4duUdVXi3oUbHDkoClOkhPz8659JgwyrfTccTjPN smJzJly9KzEw+fUUwT/uLp/gAo2606DlyKR8qjSC/tX/VPSn1v6kOU/uJrc1h6dsF XWTqO/1RIvpLCTkOa2B6w3yR48+uhT1Jf/r1Wxh9bkVQwM4UUOgjUdAepSvKC+qEX TK0DcbktS08gA3gtrkYNH6Nq0JkeNFA/gkwX3AQkeyhfkI7fRcHE8Io4g3Wg302ov xlgKCcpSgm6blaMQ+qnsABObIhlpz4XrY/ukb6cQGGYiDbzbl6pPH1yTlZ3WMRJQE JlXCTTym0dX1WGu4Pw== 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 1MFKKX-1vslU01TBZ-003bqv; Sun, 08 Mar 2026 01:25:29 +0100 From: Armin Wolf 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 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 01:25:14 +0100 Message-Id: <20260308002522.4185-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:Ek1hu/T1dCYLL4AtlBPrvF30mJ7AxFkVW1/MCrtGNuwrpfrd052 FZtJ27q/GF9KjXvzP9vCkSBJ967viwQpHqCJErmFMf8OyPORl3B+Gp8t0PbKcW02WQ5pN/p B+VN227Qc8mSkXW4eCSmbL1PFaUaLd2F0wy0NRckcOX0b3H8Uh7ftbqu5gyz5wT+4vfSlcA MFHvu1fVFwk6oGO4U2J5A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:0geP3arwJmM=;Q63q1RuKiValTjvgSn/4m+Z4pqo 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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 descriptor. Signed-off-by: Armin Wolf --- .../platform/x86/dell/dell-wmi-descriptor.c | 96 ++++++++++--------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-descriptor.c b/drivers/plat= form/x86/dell/dell-wmi-descriptor.c index c2a180202719..621502368895 100644 --- a/drivers/platform/x86/dell/dell-wmi-descriptor.c +++ b/drivers/platform/x86/dell/dell-wmi-descriptor.c @@ -7,7 +7,7 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include #include #include #include @@ -15,6 +15,24 @@ =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 { + __le32 vendor_signature; + __le32 object_signature; + __le32 interface_version; + __le32 buffer_length; + __le32 hotfix_number; +} __packed; + struct descriptor_priv { struct list_head list; u32 interface_version; @@ -88,76 +106,60 @@ 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_priv *priv; - u32 *buffer; + struct wmi_buffer buffer; + struct descriptor *desc; 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; - } + ret =3D wmidev_query_block(wdev, 0, &buffer); + if (ret < 0) + return ret; =20 - if (obj->type !=3D ACPI_TYPE_BUFFER) { - dev_err(&wdev->dev, "Dell descriptor has wrong type\n"); + if (buffer.length < sizeof(*desc)) { + dev_err(&wdev->dev, + "Dell descriptor buffer contains not enough data (%zu)\n", + buffer.length); ret =3D -EINVAL; descriptor_valid =3D ret; goto out; } =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; + desc =3D buffer.data; + + /* "DELL" */ + if (le32_to_cpu(desc->vendor_signature) !=3D 0x4C4C4544) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid vendor signature= (%u)\n", + le32_to_cpu(desc->vendor_signature)); + ret =3D -ENOMSG; descriptor_valid =3D ret; goto out; } =20 - buffer =3D (u32 *)obj->buffer.pointer; - - 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; + /* " WMI" */ + if (le32_to_cpu(desc->object_signature) !=3D 0x494D5720) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid object signature= (%u)\n", + le32_to_cpu(desc->object_signature)); + ret =3D -ENOMSG; descriptor_valid =3D ret; goto out; } 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 + priv =3D devm_kzalloc(&wdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) { ret =3D -ENOMEM; goto out; } =20 - priv->interface_version =3D buffer[2]; - priv->size =3D buffer[3]; - priv->hotfix =3D buffer[4]; + 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); ret =3D 0; dev_set_drvdata(&wdev->dev, priv); mutex_lock(&list_mutex); @@ -170,7 +172,7 @@ static int dell_wmi_descriptor_probe(struct wmi_device = *wdev, (unsigned long) priv->hotfix); =20 out: - kfree(obj); + kfree(buffer.data); return ret; } =20 --=20 2.39.5 From nobody Thu Apr 9 14:10:28 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 20C3F1EEE6; Sun, 8 Mar 2026 00:25:33 +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=1772929536; cv=none; b=QLONCHJgGhMpt5AtFZBlFatvgAFOTxztkHSy5QIeGfGdEniCywIrs5cogd9LJOnAbTYkRG1s0AgBnArX/L2xtLT10gc8jVi1V/HI0zha4a1qCDuYbx9FKmZg4kP8PR3RFBucKBKvnNVzpMS2yGqFyoljalRII8rkyA2wsrfzmxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929536; c=relaxed/simple; bh=4qQeuO95GLSeEuCW0l4UelYobqF6TLscPNjWun3HviI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XGamxGcbF0NuyNwaSM5jjGalbjIG+V2fZ9RWRnp4oyxD8zJcZ27zKY8CbQJFXuMbsmgUfbbkP4mMHC6ScpwqbcMvgq8XcSeJsfLbgvfE4V4Z/RPv/AQ7j2i0DHDmj9GoBNxsMiP/yrYy8rqHAAvxPA6AlxffdPL8l0shpwWnEJE= 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=h3b9jxMM; 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="h3b9jxMM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929532; x=1773534332; i=w_armin@gmx.de; bh=9IkgDUTGUrN88laQfkUAHjuJjQ2/fB5RAdk3lh9Co/I=; 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=h3b9jxMMzQuxMoGbjZ/YNqT+0T0IC+bZ9Z162NDiY/uo8n7mR58aEabhYwgzoCPK Xg57XJRM4oGDYUWOkXeP3ColBqJAR6fQqz6VaUZoeziX/gY3wgfLVI9RMArvL0riP oZzgiSAh2qlYZaS93rRqsUKQMMcOH6U7GWm7oFVFuPX7UJPogHAL/+ocNszCVCop+ epqkWH8CVxv6hdLh7GRzSxZLHg/KqtIqbaCIaUz+0MHvYNER/Q9AiS29oCf0b1HOu 1Jg/tXivhFezeQCP0MRw0HCQo+SaNKWpHFo2lbOdUVoPXZlBbzYFqoUowF0c0UnAO hBhAkJgtxmvIm5nMVA== 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 1N9dsb-1vc3Rp057l-00usEV; Sun, 08 Mar 2026 01:25:32 +0100 From: Armin Wolf 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 2/9] platform/x86: dell-privacy: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 01:25:15 +0100 Message-Id: <20260308002522.4185-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:Vfy+wIfyU/nI8K5KXwrLesE27167l5HRQjFvsw8+JPt9urP0o4D 5Ix1eJ6VQG2DqGqkCX0E68iaBbzeB15zmIGvxAQd7MPuZ/R5QMCDeFni5p58HgN8ByOT5uE gt0QzmGcCtiOYpkkUpMKP0UmMPhUNTbxOt3/EU1UFCoqqXaGESFRjq7vWbmgLX2H9IyouEe RL+QGFzxDnZAHuKVFT7XA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:jzvE7ITIoSg=;R85EIHhYW9KW7iF3VEaLVMyN+5h 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 RqqsCX+8yKoKpetg45ef 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 | 78 ++++++++++---------- 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-privacy.c b/drivers/platfor= m/x86/dell/dell-wmi-privacy.c index ed099a431ea4..470273cc2fd2 100644 --- a/drivers/platform/x86/dell/dell-wmi-privacy.c +++ b/drivers/platform/x86/dell/dell-wmi-privacy.c @@ -9,6 +9,7 @@ =20 #include #include +#include #include #include #include @@ -25,6 +26,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,59 +206,36 @@ 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; + 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); + 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); + if (buffer.length < sizeof(*state)) { + dev_err(&wdev->dev, "Dell privacy buffer contains not enough data (%zu)!= \n", + buffer.length); ret =3D -EINVAL; - goto obj_free; + goto buffer_free; } - buffer =3D (u32 *)obj_present->buffer.pointer; - priv->features_present =3D buffer[0]; - priv->last_status =3D buffer[1]; =20 -obj_free: - kfree(obj_present); + state =3D buffer.data; + priv->features_present =3D le32_to_cpu(state->devices_supported); + priv->last_status =3D le32_to_cpu(state->current_state); + +buffer_free: + kfree(buffer.data); return ret; } =20 --=20 2.39.5 From nobody Thu Apr 9 14:10:28 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 7400A21ADA4; Sun, 8 Mar 2026 00:25:56 +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=1772929558; cv=none; b=njtVDkxf3FnixJ1V+QN3wfJHV6evOLaWBcxuvu/XP3wE6uJM2Fs7dCM9dq2FI9amsxNu4MvU7P+3yxi8rHO/oc9/O+K/NP791/2pggV8mhQLWa8H5b/XApR/wo/pa//MDLnlI7zYBjOd7cMyEbihUQfXsiVCJDYGwFNe9Wg3Zh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929558; c=relaxed/simple; bh=TToQ5G2JbDg75a+KCJJlKmBnsO4vGxsRL5MZn+NQ6sY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jQ49KNr7lvl7eIXbRm+kurCLDs1C1FrWlyK3/to14oyUosAgtqB01+G34oNupvyawzT1Rl4pvi68AGrv5/I5ES/KTlTvlN4zDM2dx542zltw8lYIfQdXi9tF28IEXtPZUdkSPsyCSRYxGtVaCHBnCmnKPIB3YvZZkoHyiDxtN/k= 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=oiduIOJg; 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="oiduIOJg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929533; x=1773534333; i=w_armin@gmx.de; bh=AN0T9f/KPWLXr5kVN8lNJyu+JTV3P5IvPZoYHnG15Zo=; 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=oiduIOJgeiL4OzV8So9csTSPfbsr6Jy0o/dtkPeGcX66b4HXI8i1cX6uNlLHQWs5 T/1JpHPnCuZF4Bm707oIxkjSqPVqtsJlkjg0/FPn98Qqgk+866q5XeQTZwKDe+Cba qK8JbSubIBIYsleEkVfjSaEoKQJma88QS8EK7pvd0ZsIqUobrRCTCfkpTa7i1hgB2 yWVxpdkA0uHrGnJjMKVkCpSgPn8NEawKVZYseVRlzdmsiHL97G12L7ev/6nRcFBx/ I+hlF+fXHfZmmuCj6T3Hq5cs+P9gOcI5Ss6R2sr5SZj6c8Fl8dvsV40RLvblNZOQg VhUjvXkcMYmleEKMoA== 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 1MOzOm-1wHgrg3oi4-00Sg2d; Sun, 08 Mar 2026 01:25:33 +0100 From: Armin Wolf 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 3/9] platform/x86: dell-smbios-wmi: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 01:25:16 +0100 Message-Id: <20260308002522.4185-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:BrOqty6lrrCFoyDTO/j2VBMmqbtDtRGDvxr7cRbKnNxDJ5cOQTV TaW6DQn+COlKP8aKjon75VpX9NTb/a0D2y93MMNzWKzkVp+oX5BLnQRX/Rbn8KKCW0mtEB/ crLH/SIx6le7NXfWgDuZL0DpOLQXmZ+wfgcJCxMGvTfMwDMiCS3T1LOVGdyPGmHLDQ80Cwt AV+bs1Hl2eQ96UiTjcR4A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:9zYCcyRVHwA=;6FGYivqhiUSRJsj2ZccPDJBQC7M 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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 SMBIOS call. Signed-off-by: Armin Wolf --- drivers/platform/x86/dell/dell-smbios-wmi.c | 46 +++++++++++---------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/drivers/platform/x86/dell/dell-smbios-wmi.c b/drivers/platform= /x86/dell/dell-smbios-wmi.c index a7dca8c59d60..3c05b48354b3 100644 --- a/drivers/platform/x86/dell/dell-smbios-wmi.c +++ b/drivers/platform/x86/dell/dell-smbios-wmi.c @@ -50,38 +50,42 @@ 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); + ret =3D wmidev_invoke_method(wdev, 0, 1, &input, &output); + if (ret < 0) + return ret; + + /* + * The output buffer returned by the WMI method should have at least the = size + * of the input buffer. Because the Windows WMI implementation ignores an= y surplus + * data returned by a WMI method call we emulate this behavior here. + * + * Additionally the ACPI firmware might return buffers with not enough da= ta to + * signal an error, so we only print a debug message here. + */ + if (output.length < input.length) { + dev_dbg(&wdev->dev, "SMBIOS call returned not enough data (%zu)\n", outp= ut.length); + kfree(output.data); return -EIO; } - memcpy(input.pointer, obj->buffer.pointer, obj->buffer.length); + + memcpy(input.data, output.data, input.length); 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); + kfree(output.data); =20 return 0; } --=20 2.39.5 From nobody Thu Apr 9 14:10:28 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 BEF0942A80; Sun, 8 Mar 2026 00:25:35 +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=1772929537; cv=none; b=oi/0F8C1h2Jn9pO8zB4TK7QkQ2n4kYEp466vVcRcCHDTqRCimazsB1r783RS5AA58D5wtIQw4cmZI7hNhbbSVIqMc9gGFT3z2Ib90K5RGfOwPtnVHaVvPLUjZ/rUfvHIBNqiRcmrBHjDA7gshr8ECQBrZgp5ujt186S27YJSDA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929537; c=relaxed/simple; bh=hX8yCnYWnHj0i6qWj2AAinoE9jeXb6HnLZTNJmXhByk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XPYOdX4pfMd2Jy3uF16At3y4wKm9IOI5RdnBdoLTOK9g4cycgbU1JXDfxSo8XHDPLzA+lQdRd5Le6B4hlHvelqVV5m8bG0w4z5Cl5hbLt8q3+gEsf8mMIWQ9wf2UQ4cheMAax3DRVi7SqhmBe6RBMeknp3gOnDFsAOHXSvIyCYM= 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=YYZiYqRx; 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="YYZiYqRx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929534; x=1773534334; i=w_armin@gmx.de; bh=tU5WSuU6lQeUEGa2DbWvnOAy24Q+kkPjDW6mof+dCxw=; 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=YYZiYqRxxFVAwnM+1m0fR9/2xwEbT8Gs9mAy89n7pBFGoHPWubGr8unbb3RqvWO5 /qwMr0S5U0y3iBCWcmd+g0rcV628MjDhTBfLHVFMco7wi8zKLBSy68dDp4NH5UGVY JFaP+SvmUt0hauIzycPAFu2dLhQvIaj3MrnKvZ300L8U4Ho5szkAfniwJg8YUO7YC wKcUJFm4Ub3V2TLn3mz5oqx2dzVPf4oCK7b68XHz+0DW6auil2nTbi1yEJfaXbPCu BZtL3J6MCrHFb5VSMMWC516z7+mh9I9rahs2SGEosPxo1VZSia407+VFJY+ZBUXF4 IUEw8Oh/2tZkgbKRew== 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 1MGz1f-1vvVZm3LjH-001xvP; Sun, 08 Mar 2026 01:25:33 +0100 From: Armin Wolf 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 4/9] platform/x86: dell-wmi-base: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 01:25:17 +0100 Message-Id: <20260308002522.4185-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:ms6Yg9w6Ojdm35wOu2fUDSGd3r//2BPqw/3Mq80Ycatp8XE4yZY Ozf7LduPlfA6l+l6Y6xAFo4Pfq7suwvD+Mpsp5CZif/0uUrH70XOH7ArG+KpfbVcQ5SVpEW 73CeRyD3DEK1SRGaL+tumPmH0wX4Vd0ZFJKxPC/u1u9WLdE3Wn74BMr79uu9/pv0lbxeYeM 1As4lW0NQ54NZQyiAK9BA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:q0SRLXie/BM=;bo5CCL+aRO764bJ14CBt2xP1djo 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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 event data. Signed-off-by: Armin Wolf --- drivers/platform/x86/dell/dell-wmi-base.c | 68 ++++++++++++----------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-base.c b/drivers/platform/x= 86/dell/dell-wmi-base.c index 4eefbade2f5e..4a7ab9fb3f81 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 @@ -408,7 +409,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; @@ -440,15 +442,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 @@ -457,24 +459,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 /* @@ -490,12 +485,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 @@ -508,11 +503,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 */ @@ -520,22 +515,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 @@ -821,7 +823,7 @@ static struct wmi_driver dell_wmi_driver =3D { .id_table =3D dell_wmi_id_table, .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 Thu Apr 9 14:10:28 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 08E5B21B192; Sun, 8 Mar 2026 00:25:37 +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=1772929540; cv=none; b=kLtbMRTpsbeZfJ7U9It3QrhlrDv13CWdqjz3B/o3NeGJNpsVYP9vJzgx5x1SrPPSmKzxaPE3HVhY8ap5vczhHXSQBgtj5DEJGxJIFzdXEhrYd47FePIwkRho1XmnQGs0dd+P1vGfVtHrPTzs665n/CRkqTTCeKoGdhb97mKubAg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929540; c=relaxed/simple; bh=iPCUkxzT1pgRAs55EHDRcdwaaj7ZNbWDMLDA1ox4Qpk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n7Af2hrWHZLCghcKS2G4BxyXes8lljOSdN8ngWXvsS1BWaj1V5bs4BlfQXKdIzunSsNCs1UnIqldBmsFvQGZd9Qk0b5oLcuQSj9ZUJKSZ0goknfQaGOO1bHgrTRgu0P2+MQfAjXXYM2xgQF1PiGTHAntys70p1pksVVLiBi59co= 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=EPJ3UOEs; 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="EPJ3UOEs" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929535; x=1773534335; i=w_armin@gmx.de; bh=9yYEAN8R/q+eJ/epVkmHeoIfIOY6a1BOEdI7zdNvdbE=; 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=EPJ3UOEs/ApX2STTQ0Ly3ynaoaWMZ/eCUAKyEgnLxqLauJwZey/b8ejotNzmOllP qfUcv3atTsVFqhsTw5s+jB3yDsceHC2GNL4B2yDReXFba8l/1zYQDy7qb+c1qKkqh BKEtkafjj60wv2GXSP0iYZcTefr4e0bZ/1w+HO+oXL7AxnpbYifiXWxV39BDo6U66 oN09zX7iS6ifCpFtUje/RMNrT5burDOHd+Ki3NkF8ZOkLV42Nw4a3OQLfmjm9KV4j C22RfqxRHLwu2r69Ru8V4EIkchqsTmybn+niW2RhAI97aG/o1fTbwMQy0OVh/RWkN gSvNPrzYQfJEp9tmxQ== 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 1MVvPJ-1w6yQF36E1-00MPGA; Sun, 08 Mar 2026 01:25:34 +0100 From: Armin Wolf 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 5/9] platform/x86: dell-ddv: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 01:25:18 +0100 Message-Id: <20260308002522.4185-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:QOaHDdaASEvtIRIk5wBOip189o5TQqFAhRDsbrdsmWJ9BTPMPAB +AHwOsTB0t9vENlc2/tydswedAMSgBhxb/wzsMwefPUWnroTuApZ1bKozzjixNwb0D0kowA nyBXEqUWNYflfjBQUfa7Q9mq13N5GS8lR1j5tqDa64uKQA9vBHAeFnNXWEfm/N+JuRgP1V7 Nj/TqcBGumPr0cLG9cFKA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:IuDaoCC5aSk=;xlRfaNLcVORZf8FEzpovI1swJQe 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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 | 194 ++++++++++++----------- 1 file changed, 105 insertions(+), 89 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-ddv.c b/drivers/platform/x8= 6/dell/dell-wmi-ddv.c index 62e3d060f038..a744fd21b8af 100644 --- a/drivers/platform/x86/dell/dell-wmi-ddv.c +++ b/drivers/platform/x86/dell/dell-wmi-ddv.c @@ -7,8 +7,8 @@ =20 #define pr_format(fmt) KBUILD_MODNAME ": " fmt =20 -#include #include +#include #include #include #include @@ -99,6 +99,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 +131,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 +163,122 @@ 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) { - 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; =20 - if (obj->type !=3D type) { - kfree(obj); - return -ENOMSG; - } - - *result =3D obj; - - return 0; + return wmidev_invoke_method(wdev, 0x0, method, &input, output); } =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; + struct wmi_buffer output; + __le32 *argr; 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); if (ret < 0) return ret; =20 - if (obj->integer.value <=3D U32_MAX) - *res =3D (u32)obj->integer.value; - else - ret =3D -ERANGE; + if (output.length >=3D sizeof(*argr)) { + argr =3D output.data; + *res =3D le32_to_cpu(*argr); + } else { + ret =3D -EIO; + } =20 - kfree(obj); + kfree(output.data); =20 return ret; } =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); 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; + if (output.length < sizeof(*buffer)) { + ret =3D -EIO; =20 goto err_free; } =20 - 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_buffer output; + struct wmi_string *str; + size_t str_size; + ssize_t count; + int ret; + + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output); + if (ret < 0) + return ret; + + if (output.length < sizeof(*str)) { + count =3D -EIO; + + goto err_free; + } + + 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); + count =3D -EMSGSIZE; + + goto err_free; + } + + count =3D wmi_string_to_utf8s(str, buf, length); + +err_free: + kfree(output.data); + + return count; } =20 /* @@ -265,28 +287,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 +316,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 +348,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 +374,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 +431,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 +462,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 +573,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 +584,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 +770,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 +778,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 +1014,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 Thu Apr 9 14:10:28 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 C78021F4631; Sun, 8 Mar 2026 00:25:41 +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=1772929543; cv=none; b=Sk8VnJvZ4CCAcwZcc01i9imDsTEuw7MRByOcrnCK3rPkT+802ebZ71zgolEbxnF9LyldROt4wNFUm/eUCwhFV+NeHaVT6qZjRuQ3VtzXXaIOZCwVwd1mdADdJO0zvvcQW7bnFquKwee+dcv5vYbuNxAsHfDiedX7jyDQP1594hM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929543; c=relaxed/simple; bh=lqLLax5AUIzeLvuMUH5Bc4/KsRBo/suA8+O3cOc85KU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fWI+kouUT00wZajxEP3Pcie5lLpzhGZMqm1yi1lEkwEAzoc7Opl1rAEO+l1HLR/E2xoA2KhD4cXELqjwYI7/ZDjaa3NsGpFs6cC5Z8GfTJeW0rBJx2w+CJsHTOpd7yw3h2+Jlvwz+FOGEBOJUn4ZOg8CXciM1rOJi2H3Zec0lWA= 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=BMC/B+/7; 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="BMC/B+/7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929535; x=1773534335; i=w_armin@gmx.de; bh=3C8KX+mNbXBtpLU3SulTYab3rrmX3JXn7OFVwlc+R5M=; 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=BMC/B+/7APUqw42cRmo1R/9ZLaQtTxAzQJJIN6lurSZXiYGXWP/q+n9QiOclH1Pj z3LNKwy0N4r1QaE0LP9BB7CFwyEjhm7CYxbA+PF5U8bI4ijV76iRX2vb6Y0o8CSZU 871fD29mDNgQ0AjRIWUeeD+6K3EopVvYkSVjDvipI97FiB89KDrOQtHq2CDW8SP8t OJHj7Jd+Y6VRhnHmDt762LSHC6x+d6hQq3/sK2+OCi6MDI7CCb1PFXZp8yyCkkaEE Fqm+KzDzIx54JP6ud76t7wIEMdENyxJd99T6S77HPVDpiMx/G66sc2P4FOxmjG0/B 4WeOU1pQLCuLuWnc8A== 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 1MuDbx-1veDBa2sSz-016hKs; Sun, 08 Mar 2026 01:25:35 +0100 From: Armin Wolf 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 6/9] hwmon: (dell-smm) Use new buffer-based WMI API Date: Sun, 8 Mar 2026 01:25:19 +0100 Message-Id: <20260308002522.4185-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:sqibX5sG7MClgC8yfOo7ZUUnDENMD2HrrfPf8RMpbHyUHrFhVN0 cWNtf0aXQlFwCY8fnCwnNS5R6S4mSIhhpXT69VmA8dNNOS8CBaX+QWE+JmFKMYBhKMB0no3 VUNzOXi93mgAB1+7ojzFEWjgY4c3Ak8fcDMlTeKsGPqXgt3bFoxCuRpxQ1uifiwlQDSjPsT /ypEweZyzkL58ErvAhjQw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:NBVmMP2cH+k=;YMGCVfTWF/urCK6wD2wv0JAcF/g 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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. 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..07c05a82dc26 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(void *buffer, size_t length, unsigned in= t *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(void *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); + 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 Thu Apr 9 14:10:28 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 7C1BA217F27; Sun, 8 Mar 2026 00:25: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=1772929543; cv=none; b=fEShmTv6kSysBQDA2+RgKqDfsn/kwabypBJPARItf/UcDug2QZlMoi3WiXaoomK6JlHQ1YztjQDHA5NX9HvgF2k4DK3Mktk16LpaNV+tef5oycFu1Ha1ocJSfSUl3PfEuGN3R5dmP5uCI+kizZMFzLeEgvhGUKDvTtDbE2lf5gs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929543; c=relaxed/simple; bh=XkCMJ7ozZ5TIFut03c48XQ8wVAkXKSmOEqRVO85lZyc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sEeaWIKl1ZOlo5csR31XDKr9xhm5bKE37YnH6MFXzHPdMhmgQewMpVkEltSkN7rAm71PsVRvcNuoHV6fmrhz6Fd1CVq1jz/skP/X2RKE80beo2rLCa33fi7BZVrGXa6ygaswpQm5Y9Vk14QbK5cbfPHl9/LrJPOzUVfoCOLCSr4= 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=T0t2q6Ed; 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="T0t2q6Ed" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929536; x=1773534336; i=w_armin@gmx.de; bh=U70qC46D3P6sJ9E78bZU/zkNQ2aG3Rvvw/Di3Z3vUrQ=; 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=T0t2q6EdW2MCivPzFi2YZ5ZE5VTVq7ytyv+ZWi4drTPL259Mn8ZtQ6X7C0Dx8xjL tgtqE1TLmd/YyRP3yWPKB0fjx6recpl8/0HlAQA3zSM7QEu46I5GHliW4WHuEoULk jo7wuflTu9cwVT/GGdtPlrpC1f9L/3UUN9C4GFcGHgf5aZ0CDct8O+g3dSyGr8osh CmcZtAHKY8o8mdGZA8vXY7hnVrRZcbTqV+/+L7udivKVzmuxfk8Gz3o+5OhJx4aO9 rpKqjlT2xfTR/9BSOtA2hHE5Ny+C/8bRmPvgxiFEWhR8gmHJcuIwH75jRq6xPWZeB hFy9mAodqhcRux5Hjw== 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 1N4hzj-1vYBp12VQl-00wHMA; Sun, 08 Mar 2026 01:25:36 +0100 From: Armin Wolf 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 7/9] platform/wmi: Make wmi_bus_class const Date: Sun, 8 Mar 2026 01:25:20 +0100 Message-Id: <20260308002522.4185-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:kFkDScghcW/iOcmbYksqcJojfCyt0GFot5Chwu45O7cVvZMTFux Bfty3fqTJ25xE7Y+RPE3qB9/HQJ8mXeVZYjf0jP2Fagu+2aZyzHTivziMt2SP330GI42+Ud 641kRcWsCXdVEyN+NxtZIYcUfAZF6dsZW1YYnwjr6Inxs0pKOSa/xbDIE8P0AE6VZJ1B/zy JNsprgWNUzyTZFV2hM0hA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Az72nDoYo1c=;sYuzkXWMTJZcOGIHG3lEJncwzlf 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 x5hqu60eqtjOXsAKcCaAuBHmvjqvKqaXhyOVNM 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 b8e6b9a421c6..082c85625878 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -1069,7 +1069,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 Thu Apr 9 14:10:28 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 9C36A221F39; Sun, 8 Mar 2026 00:26:01 +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=1772929563; cv=none; b=Uz8BmgfiAfWHfBYD0i0M+2EThDzX9m8xiQFP0XYhxXAkPahmHsA01uYRRnwvdWEuBYI88eOQcjkdT6D6R4i9PglWWoGZOk2Dzh0vBKNzOHsGXyGyhkxJpcx07FYwuBfHwzXlKlBUqtuUc69jyomIL0PZpX3BJRI3U0zPpFOQJQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929563; c=relaxed/simple; bh=/eGwD4fhg8LTJnCVSRrW0gkeOJMBW8xCMHNlNZwM9Oc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mCkRv/ppscgaW1psfSmwoHGL/+mh2ldM8u0ebq67YQCGPCVhoQ/hqksLGB/JhWHFICftn03vZxskpZPPbM0GrURzUXvchDWghjtFSR3qJ1HjtLL+pLgywwKj4G0jexe8AhQ5Hp1sg3aCZpmEfKG1ZFXTDbiGYxe4A5j8gHtYMEw= 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=IBptAiEd; 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="IBptAiEd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929537; x=1773534337; i=w_armin@gmx.de; bh=X0M69zc2AGnZp/wYLbrO9ROF+xDzTXntMd5s3xSM94k=; 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=IBptAiEdvq6Uj5T8GOE9M1i2M42F8Q9EsuPrmw7bqPSHbp5UUr9yAqoQy2bfNvOq AmUuCOidM5oEzFYBgvNLNdTUpnjHvHYpsnJ0aySb+B6h3qPD2Lvty74Je7gv2OhTu K9xsVjCnZNtH2WernZUusYEgqWCFRsHopNj2SbKo20hjYTwVJ2nBCGDMGgO/I/tp/ sD8Fa3WcYxKo+f9TcUvuClWj7sU7tpyU9cgGYQvjDXmYM/Ppf5TM832p3NrClpmXD BmTZEjtJewGH7jB4Z4JK0hRhWD7u8p8eLZWrW8DbuukIelMmYKkJ3VnjEgl/xn7N0 IZOxY3/oC/tjxaSe7w== 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 1MS3il-1w6Qe22CLr-00M5Eb; Sun, 08 Mar 2026 01:25:37 +0100 From: Armin Wolf 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 8/9] platform/wmi: Make sysfs attributes const Date: Sun, 8 Mar 2026 01:25:21 +0100 Message-Id: <20260308002522.4185-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:AmcaDoulOsig+ql47rA6C25ddDEOKgjG3NXGsy4EVCFmhkWiQLC VdbBVSAq5a6oxrHrKU679L0DGy9otslOscj+Ae5H4X7GawoQ+rnOeKGbpfQWg7ySoxXOsqG t/KMBwcOaGEtFVh53dc9FzkmdE/dSNRFra+DNBwASYvsLSSI/c0iEbUN9Ywu/Plx7QxmctS 9A/sCeANIWaALEGODSUlQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:OFPjaLXF3MI=;WqTcPWaSnF5b+c7z258GW+ovfmB 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 G3a7jVPs= 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 | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/drivers/platform/wmi/core.c b/drivers/platform/wmi/core.c index 082c85625878..1b5bb3410252 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -812,7 +812,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) @@ -821,7 +822,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) @@ -830,7 +832,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) @@ -840,7 +843,8 @@ 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); + +static const DEVICE_ATTR_RO(expensive); =20 static ssize_t driver_override_show(struct device *dev, struct device_attr= ibute *attr, char *buf) @@ -867,9 +871,10 @@ static ssize_t driver_override_store(struct device *de= v, struct device_attribute =20 return count; } -static DEVICE_ATTR_RW(driver_override); =20 -static struct attribute *wmi_attrs[] =3D { +static const DEVICE_ATTR_RW(driver_override); + +static const struct attribute * const wmi_attrs[] =3D { &dev_attr_modalias.attr, &dev_attr_guid.attr, &dev_attr_instance_count.attr, @@ -886,9 +891,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 }; @@ -902,7 +908,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) @@ -911,16 +918,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 Thu Apr 9 14:10:28 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 9414B213254; Sun, 8 Mar 2026 00:25:59 +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=1772929561; cv=none; b=ue5WV26eRKxWX4dy/CZ3fsJ/OHwNsJ1UR2a1cWNDBIoTxhL6i+p5cQVkttoj/llXh0UGwDtKCzEIyUnL5qc6ZqrEKadJ7e0261tHql8kl8t8V+TFo6Z0/IbFSBn9jdWnol++XHCTUp/KqqnG0F4wGjHU3JBUDBxHPxTfNOZmI8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772929561; c=relaxed/simple; bh=EIEAIMAWlivOEsKWrFH805avfGEQHpaDoGyT6YNUhJI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nGjQkIFehr/wKr+4eSBVeP+rg1EzbdzYrGrNit7g5j/Tib408LQtvVclkHSTDeUR17gtnJ6tR9hd9vuAai5VXGTkLduxLy/NCuJ7ctmdSosfFLcF7YjVB12njnjXGqX+JURvcnIXG9dFT1DSdIcY8Jf/Hw/hc7a2dzLP2AeZQoI= 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=cAwRT35C; 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="cAwRT35C" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1772929538; x=1773534338; i=w_armin@gmx.de; bh=6sk9cZuhnKYi0MkbTnCeftlMbOwsXCX+l4ak3dLD9wk=; 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=cAwRT35Cc51FdJskIUrHccTMSxC5FQPgZD8VHB5YXqNSLuWJcjzmyYJUzdmR2hSr QJpTRXwEgDjHe3TTac3b/QB1iqta0H7CnWti3crpK09+ZSQG7U0oc4MsCUtk6GIxJ ZwERA4+UVZhe5uFJUa5hJ9hMTeuKdqdw92crg580cG6Aa7zhR0VDlR730QUDeXZku APe50R/rai8LJtgziqBdkVy9UWnDJBePiDfQGaiA5fAVCNCSaLopAHu30a2XRfyRJ r2SpH91rqaJQju2xiBW9de6a4ka3H4wX12QhxSQH/GLp/66PN06psbJhpDGnSDweO LdJi9o6CX5I9hmX7ZA== 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 1MAwbp-1voLnP1gEb-0082Nx; Sun, 08 Mar 2026 01:25:38 +0100 From: Armin Wolf 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 Message-Id: <20260308002522.4185-10-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308002522.4185-1-W_Armin@gmx.de> References: <20260308002522.4185-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:bzeM10vpnhivd1En9jaZx/dwVVTpiFCmB+zHKb2lyR+Mm3zHBOz o8Fn5Oe5kj8Pl1ibexxIDR0wSlg5LklT9t/6sEvp/9yzgHycXbMpe8kPNZ++r/GJ/C57tAr kqqiDpsKtivg1woTxpoW8LaU2jRFYvR0AGVHbMflXsh3/A4d30L1LeoSH7Im01Xe3kjqFrI cSND2o+oGMMyfolHBFj0A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/Ddaqji19XM=;CZsNUzHItbEqYiKFlBZluYU/hmy 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 K6cKB3f2DyTWMJ0YEJxHVIh4HmeCC 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 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 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