From nobody Thu Apr 9 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 CF1943382F2; Sun, 8 Mar 2026 20:02:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000176; cv=none; b=EiDK+KDqMXe916GIk0JkTUyge1gzWfV3hE8+RG0HVT5lE7OPvct5f6Ue6SW6LI6UnUwfWgQzHTxbWZWqVygkxhpwnVuK542HoEQJJ4Pc2GkYvs86STyHmKLz++VLvmuJ/7EdMudmeRnXI96TSDnZPf25rP0HKMxea/3FgnHTrPo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000176; c=relaxed/simple; bh=adn3OUAB5U86bg/NTahLF+r6ztrkL0f+31fxu2dWfCo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=l8hvx6wZYrVQ3C0ncw35vxpa+nneAutCzGuyAjm+tjeCJgWn6wvoaZDsJDHNjVSzX5mNEI46WdOlnxvlC6ygDyDtjQjd23yaN43HDO/YmJBAuvNIoESW2c7vSFFsl684jEiEy+XWjTg3587+ZGsgjho3hX8dnOtyyVTf9HYaa/M= 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=lVIq/WWq; arc=none smtp.client-ip=212.227.15.18 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="lVIq/WWq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000145; x=1773604945; 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=lVIq/WWqOmnK7UV+uRNwcq/y4mbD2Wq1Yhn9BdjzP+WUMoYo4rv4qERJDXQSpUyZ TUE0diTHDJmMgZvb/UueEoTDHQbvmGkJWR7RR16JgqkxuC9Nj3nP/sXteT6Fhj+l4 qYljhRftIsLLTKW7hyjFmmQ5XpElaoQi7zYPzOTMI45gBhsWDFKVRUZPwVD36Mqh6 pQ7FjZ4tQJ5AAvFLjytHyoI3CAKLUCQC4kpN2vgpfMKhxScbRLoCwMAENVzaKURv+ 5RiFzadz6jXlWViPnbjrCaPBpgRwK4Y32+aWxRe8AdZRrK+MkQJp1pesF6yz0tWiF iYssY1O25OFFPyM7Rg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MZTmO-1wBvEs3D1S-00PDGw; Sun, 08 Mar 2026 21:02:25 +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 v2 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 21:01:47 +0100 Message-Id: <20260308200155.118950-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:vq/dqkkpSTzYcLHTneW8QVeeE03qFP+pixN8nuJJS4WYPp1wyJ/ 6r7srFOXkbxoci5+c4AeJor7L4cmS/mNC34WmIvi1R/SDvWX3DsH3LjlUGEtNUsekURtz7c iWuRY7O0WUGiiuab+4rRffgG6zqwG3QwHH1EMIHqBAzXVcz2cbqvzCrXiuSK2/DXwG7mPag maYJc8ei6oJKnHHfPBSwA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:KYp0yHI+wHo=;VO9EkibCtYyTrRfx0JVpo76o4kM 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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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 C4BBB395D82; Sun, 8 Mar 2026 20:02:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000162; cv=none; b=aTOrlupQ19iDJJ+Y/XuzWgB88ytYUSUcvArdGAf7U7uP6pUDgnPvud/6AmW/irp1tMUHeQNTyDPMOH1rvdRkNlqz03lWeVKprqxw6jfjYJrXP0tT7fOGH8qSNYVLEl0BbVBMHiEasLiz+744ArhGE1jQPaYGdDw+FjNCEMH4NVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000162; c=relaxed/simple; bh=4qQeuO95GLSeEuCW0l4UelYobqF6TLscPNjWun3HviI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RTsQc0U8k9jLZtAG6eaOE3CBGJqv0TyXmuoY+9rtCL8UkJ6fwxOsL1w6yIzRETXWYH9haLdZli+kO6kPiepKdDNt9jvhA6u10aYK0rAud3P3uDWvnBRh9WOIGqxzNzrBXyMy3enCu6LNxwXsASrLT96gj1b5ylLGfICfJK1Ebso= 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=rwPI4Qwn; arc=none smtp.client-ip=212.227.15.18 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="rwPI4Qwn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000147; x=1773604947; 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=rwPI4QwnMQoceMx8mUP3wi60izgBkMx7npeh/dbnC1vQUoRGsdYQE2hR+Rtaz8iQ 26CkJgskYKOBqDt9jzCL9d4kIE6lCU7HroFiORB6hBbhmu+DrzG5QTnet2hDI9zS6 4z1usf47/04NbOxSGSutUiqi8AU5THibwyq4Nk8YxsIuSrfssneRyYuLHzC3nNK/C PaDMXtriGh1BytpokRfLweM7WA7sZPbrlLgAFYebB+FG6BBvOqFzEXwVPa5EIYYOR 1gqb3304kUYIqBfw9hZD78evJjfkf2/LU/AK/U4H/OAG6cHcJxQrciAs4NjuS03l3 ycjl/SEKx8bk5E+PXg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MIdeR-1vtZ2c2eRR-007Ra7; Sun, 08 Mar 2026 21:02:27 +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 v2 2/9] platform/x86: dell-privacy: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 21:01:48 +0100 Message-Id: <20260308200155.118950-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:c2JIfTZqNXqJsz8B/5YgZ9U2zTLCJe1lcH/6CFw2jHaByafTuBl BxUxT4wFsgKVBc2MlpgHWxIpCgjSW0ikoQprNZKZa1H39wgAkxkoSiU2OIm1sWGBI0ESBe1 Wn4c5sJn0hH1N2USIcQumcZootWYMs6H8OkoWpXHzMozs0yAhQPaMjNXD6y6t/15uPfFrRd IPXIxe2+eXBhktxNjLnEA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:9DgHSi5V6as=;FhR5VIjoZTewZ5Gc2snnh3lnTtx 4jgCrM2UKAuXTrdlvaj09zW3kp1Aa6n5nfyZ2sdCGXQcGZK3GcqU3jhnWXQQvlZXNP+mtAslG PIeIsNYGUCP8/F6YU0OKRpy/b1WPL4BdSin+ivLvzcGeyFCyDFZjvRGkoCvpVpmpu/DkxROCC 8oxFLvuDJl0LD/YnNkOfDDAfrgyNT2H5zsmpOnYd1K3SD7AruzSOGXltrQ+/2tXLmX5BiWOmL Vr2Kmtui6C60/zyDBVR55sQ7o15ug1uQ9nKm82tQ4RgUZMed4TxuppQpe0oVpokYcvP1OTbEQ 6vM9kh7dSydt86ZZl8GJ97o6tOANgqXAtY/b6ULe77Xmw1STv3BYcV5/EXK0lQbon41M3RM9c rRKlZCSyKUXnF7pUN9QtjgSPNGvYzas/v9riBRRv3V8Rx8WyUaeR3XClVly8imnLz9Gi3KtFw 7drqDlewoacO1/9Aa9xzUkNqsGSPXCEzCqgZpfWNzxwC549tI3ediYBJI7JzFY4/r5AJ3UoA8 Q1uCrd9UVJt+oGgdeTQE6pKP5nR3hNXueL3G0v/rAVaUyrhSBKdPDQxRvDa3N8IPoiaYxLr6V n8XGnQf2P8YgpjeT0vOi1Uqy5Eqa7I9TpxYGkxLDXrF36RTso0VAzHWGdSvYrOSIZlDATEEXG M0gQa22gwguSLkPIXLcsDzWnlz7o4Xoc2xOgIy5OLpSdOlcVNLkUeATym/Uo+GDA82I9jmtDG mxy23ay78eUPG5sjPathrz57vRq4wh4XMuORG1l/HJWe67T14fY9jg2sTk2/dELuc5VBpg3ai Bg+kpjQtcIsiZk3TGeOLwXgWpWeu2YS8MM6VyA939jZhxZTEmV6zjDKHJm8ltGpPSiK3PHXTn IigtUn7ZuC5Bwt1CYRbF8dwo3SU6gBg7LYGfzFMyFAUN8H5GEInIJo/6fpQWAPMGLBne8heXZ lwCS6wEX5G5jlO89wLb+KZwlUnkMzGVpRFk8UYZNEmDTUJcBMB8pLnkGKEC90w30+Z1wyk9WD qR25U97Zfs+tMDoceekPCXDULNz9GMikjFd/UX9//rr1dHlFJqf1hojiaZ8PueAnXDwyHNA0D /+XCflf1YeMd6PAN9QyB6TElIVO+/W8MRq3PbCJjU+GomYcFsefevl4mMtaw+H18lRML0pF7F 0DGniGbEdeSRHScOmKxNiXhbPLWcJqqcNtSA5a9R3N4Nl0Yq7NI4a4uj0tVXH902F8Ipp7vsL t7U3+dRVF/1mvjS2V4qFh+9PYLK/7EO5YjLDXklG695LKscbxZj5bxPs61Elgo942VDTPDJbV huXmYLmS5hZOY430v4PDTGOUmDoHKfKCLyoa0yzzED35VVYW5VRhG2YwdTyvXe3HakuW7woOy iUUiv0UY+SYt/21YJulGT6PCruTdOhEEoTFP1cBUIN76iXmjhUzJs61pR7MV+lr7lMrj9bWJ+ 13znT7h+cKyvP22MJR21x08+ns33SucHEb9UGXmvxBtnFzoabDj2O7LHWZhX2r/Qn0nVEe8Y/ TZ4Lqb8uf2kZ9GW+8odJ6AYafzTtJFvOEqMjxadrtcskgAuFk2zX13GyjpWPTchOUecGfkYtM JkT57ZrqD7UDgILUWS5BnjjomA3DfsMfMJrIFD5OJ1fZMdAhd4fE32etyJTDhXgUqNuMxLpuC DdFsfg9LqNUIjl/XMrasigtFmEeg21U0EBHQfk8HEXcQTsfubTWL0sTidqki+Kw3BVOiIkY3E HMgJXZAGmngcyLUgyZQK6CL9+07G4Z6P0npnyPU13hXvlOqL3NMzI0RdNEcxQXV01EvM2PKcK 9uhMzCeFX49KgFsurrjKDRPMCjsDkg5d2vESRLpWHJgn8pOjS9vQKT3xmR/9PwtR+e/kCipRy O/x5OTUpSjIHza+KN94GVqwn0nptwoPXxwmyBtIzStu8zRP5QGPN7yHotbFCkcuvzEZAwCGUx rIQd2bIVmV6mO5d+6SAapy5SHEIF75/litzST9ZW3s+I477K8uSrQPrl8f27z5KgAwui4b8i2 wg9647jWvPT4DPAFCs82LWbsRGJ1MAgpmIm+BU5n+Ju2gBdNHSNHm1DpVXbmfOSkQFfx3Y/io 8GAXRl+SWe+Ig6gKH9WidYg6Tw9Ex38wxH6w+Ft7z9LhIJsQqI6MOXwAC/hfVYPEb+FaRDI9z g8lT37ew19vKeVwj4BkaTwHjMqkGAP3pllGOccEEbqo3NSNlV1EZhwQKO4G8wZLVReT4JUQoo TTQh7+FjxbZ1IHgZ2Fxjdv0AS5lPdTVBt7m27zX85OTBiuWYUsNJbwCv8jPJKTXHaiejLyvcG QiGIvLl3amLuMUHP1Hf6G6kr+DXOXUWLkZl58ZSv7S9NDQPFzIAhObB52LE0IpNY3PmWqpgDn E4gA70vr0mFLt355plRlcJ0EVYI1hAaRgh/BGgwHSiPUgj31VSPZD7WBfazskJVYHO0QHLthZ Wx9dIadoDXeWU8boSWRVd+IDS/HQzzgIewtKn/RNpMjhrqEMWE8dDJErxfGkAHtCUIlhsm3l5 D9yGoG7WsJz/mS0IayLQ2PmaPhkd80C6ERsMerPpjHhXzkmX1zr+ZL2w4FcY6WjlntNhuRhnv 4iFyGHjMrOgWeosiPAG/JPbXE6pZxdYNsra3HqJl1nszjCnOq8NAi1Y3y7OqUJHtm7MAifvE/ pQNHr6jMerGHRngjFmhXvFIc/9f5xoYoD9xPmvc+MFb84TDJMQwpwyhSlJy70v5+OpkPRflDp Y0Pz630ItUon3XJ2I78TzrmiyOHoMsCwvpZyUGwVuKGIfAIOGRj8R2QtmeLwaqdr0uA0Pdhb1 Id3u2e2VdcZ2oTlnVPrlXtvX00x3f7mciZpp8I13JYFwfprXVr8RKIi2wLuazHOscSZJVRG+V aWcG34ElpLBv5BgiVJEaazcdzfPS47xSz5nZG/Jvff6qPFpl9NWfFRZBWbMldeJwUdM/NI3ZV sKuxxWiwr9Pqw4f55jEGu5PCQK107rLduseG/xgHcq796pLsTY2/DjZE/3HHJC6HnxpcjvQko rPct97vK9ablpVxcjCcwqc3kEW4gYm9y0nQhjrHgjY3GX7UG2pr1wIoaLPpVCnco7YQ90XcYx eFf3PMikKmtnRWP/CKkI0sVzW6H2dQRFnNCiKijTMlETGWeQyZfPKygS2jG64MMijdac0SIe7 WpelqMfVyTxzySo1mlp9u6bCJ2gLVRhFMV/nupysqYjUgX2WoO4v6S28xHzfQgq8vD+LoOUzJ 656XEep+HSYgYSnRdIV2ZAy/Cp/7fLdsKzEpa4qgpvjywgqEbYCFksKT8zSLpD3nfCtijpRZH ZT4P/siGVEUeXjMNN1J84eP7JTX1K+/VhnxOJyN4UAxSSJ+Jii7xwvfGaIUDPHRS2K14tAyv4 SDWBF0yD9Jd90V4rt25IXOYf3ANBWFxFR6K+wW3C1Fmy4MC4s5MlzcHxaovS0Uy785oNPrZEh YzLQKPsVCX/OySZYzsvPKnfvCgaV7J3DKTDFl/lpT9rbO9tJ14reHSNrcPQ/M7hhWfLqX4Rfy C51FDZauCyPIYVxwuQSE7xQVW2X4JMfhrqePSD0oFt8XSbCunBMHlhxiHjgEWHYP53sdEQxOI w13HgFgWoDJQeLOJsdOR7tjhfCXVGs0CDsdpEIMAP7V9TiFw7SO7weBk4XxkH9RGSTCEodoHl 42zTR5JPxln6P4dDU819jiZbr7sYriNqtwszV7oDa/etdNFagVvH/KdVGKbLEMdgsJjPu4ZmA PA9tzEn1CJmkk8oX95BCnhtNBew5AMH2YhLSREt2BEGXkUpkTVVXfr9RKr4VyUY1+TLN7g8Pn I3ZS+HyqrDhgC4Qfo95MvqFHJ2CLhgIjhnJ8qhz8lSUhKpE0Jqzvm2WPKJgnmEn3fzmz4N+Py raEgsVlGEVDV2Sqm2JxlRW4cvy1rGjUqGz27NjwC/u3OS9Fo5gN9zBquM60cUhhwe7/38xq4C 2VhM3HG/+4WdqtLfURAO/6AzOjIERkQCpcSr3dX5VplXrPUhVp41LmJH87/nW8YlU/0KH3z0o l8ZIOpZ+NRdXIJCYhxZ3A8bSSslY+O45SMW3XdPy+fqyaTAYs4MWRlEj8ArSDz3FCGFY+sETR dsUgR40SmH8BCB1cgQxLwtqDXgxdYNHVO2H6jck9zkn9on16X6wX8zl1LnY+mff9EtEosiEWn hvrxnwTH0VjjVJjZ0wYZmyhsq+vDwrgJpv8DB3Enw2J/rIsau9BfAd5GtP+oykTHice7IDqoX 8x6QAyw7tL4jZYguZGDi9fhqDUHKfgMFG0Ye+SvPHo8R3yoxpXcDEEAz6lfuKbmMZTfs4sv7u Tgt1UC09mIrXNrP8urOVhdwm+Rft+EijEKaBLXlEUmTqVzC8In06ZoffE6LLNDBwY2SbDc4mD 8Y/v1fUcJkPkVF4V5rGfPbYRqlZwdssT5mgLbmRQVX34oswEgEMQHSfgNNld9bHr14+1V/+nv z1O+w3/lMZtzaPUpYKozYVBm8ShoJmkcbp6xsSKF9ZeWi8grDHzvGQ9WqEn/jlU9jghWcKNLS XRGiblKMyMfZeJUSvi11PQkaH7CcvrwpPaib7YmzEtxlVgsXdbLY6lpM14lKkE++EwCNgClru Lrm9dOQChm5ZfaIWI9GsG87ShPxdZP8oFoTHWNX5HdlJZgiwLwgzvCGnqmCq01CzATCWkEdTw Q33X1VK/tz+mwDkjkzPThrmMuR0amYBAaUth8EnACEPTGPXBiXS1HoB5BAKqRTWESJO8T29Y6 id635vgM4B1RamLzq3GxEFVU1x+5opQFbUzgoKNyz99MOItFSFvxdGwPJAyg/yMRdRyTUH8Je SbKPKmp3IeO6jZom/p667YY9YGH6JFS5bsdIMLC1Wq/ch2JYeklTDJ+OgIQh7q7OG+cwR+bMG iQkJYn6FXAVC+++OGt8lJaTZxBPdagK5Kl/NjI3UqdcTyWdp4SnZ3NnRyshiizg8JRcnHQ1gc oa0bTFqooWiQIxP4L+W0ynCOAxgAWhSt5R5q+jDzRwfsIsdBcacDGh62mWxmRLa3KjF58PH8X gKwEwfc7rvgfOVva0z3wJ5MLpyunBa02Tw/SQ8vW07bxkXVhbiBfEHwRG+eauroPXwmS0s2uc AfY3mIcxOmH9yrL6KDrIc/ELOdBZIcNzaKYeUJu/94TCaisSvLnaGx4D0DFetCI1cm5NlEP2z 1/gsHJZENc7IgeAAD3FXHtlWKiTnXCIKF9+TeUg2uo7lbScSKB9xNk0QfRl/pZkEs/cTJ9mQj EgVrBJEMSVUGuoe+RRwQO+e4LUu6ykH95gjyZ42h3w== 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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 95D3332ED24; Sun, 8 Mar 2026 20:02:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000167; cv=none; b=D9pMYvxekahQKjc6I9+Ix1XoblzG9MyfeeUmBo9Mt/zfFRkYUdClgN9dXGUyrLyU2aBOkxyDoGc0lYKnQNKo2kOxaUuIRYb9HO4llI2OsYnL0wzGunaXVh2PM5i9ORLqMt+5WTVhFHid2h/YLKbzdj53j1UZw3aXuflZaMyarZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000167; c=relaxed/simple; bh=TToQ5G2JbDg75a+KCJJlKmBnsO4vGxsRL5MZn+NQ6sY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lVxd0evVLAJO+qrXW1yiuSbpqxE7Ah7XrAeOfDNDuvfXEdLIK/AHt3thcuQXQ+TCs9PvfLPzof0al7Sf20fxfvcQzpMWAgZ4fDaQBfKmc2znO3zj+OvZIOlVs2H9jr/m7ES/5U5MLJOcyoBpCHg86F2ZcWnWLQA3fkEavkjDMEA= 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=IciRYRIe; arc=none smtp.client-ip=212.227.15.18 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="IciRYRIe" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000150; x=1773604950; 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=IciRYRIeCOv/VrXZOrscjeCHrEBQ8zW2p+SW78BTIqRPnp1+eobQtJ2Zgxb0ToLC k7B+pEOc5+0NK35KtzWD25cKsiltGOTlUyWY6v+vUvnjtuRLI6qkl8IAumQEeV8pN s4p4eDhLWh4DaDwiUAUtS0B1xMTXJoJbzhCLuh4b59FhTG3FkqaE3EmrF9EV83J9n iahPB6Ibm7f4xOwN/0P1nSs5z4VmHdoV6wbo1Z4RdzMDq2p8fxZXXuRyprw3wvaje sLwhSKKfhW8KSyDv/5bC5YWcTsfJoKYaLlXKuHVNwhYlb+BIw4OlFjlQZq1xeT8OA ibbBz1nooh2T8JaXHQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N8ofE-1vcaQ748zm-00xd5Q; Sun, 08 Mar 2026 21:02:30 +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 v2 3/9] platform/x86: dell-smbios-wmi: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 21:01:49 +0100 Message-Id: <20260308200155.118950-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:AN5vNvfQGI90uGTq+flGixPtoZnU20MPjRlMZGjvJNPdtAYfzf6 cNcRPkD45eIiETplisd2QKtQ6hmVS2OWwStg+kpBFkHR4WKSQVPrWd/QjxahXNag7eW5aZV KwUgUGT7lm05vLewh65CeLOblxKQGhL8DRW6dYBPh7lOpH1BInzo5OeGBoy75cvLJUdHE1E zuPSXYujAGAYSbR4wpKUQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:mwZr8X6pcMo=;ic9LBcVZUF7UykX2QOUGVZbCmDo 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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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (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 737DD227BB5; Sun, 8 Mar 2026 20:02:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000156; cv=none; b=UQpfy3PnVLlGzR7JDr+TPVq2I/v02N8frvjQdDHXgZIOb2gqlAQruyRo7jw8jPYMJGzrnUinYGLRu/35iF1zqE5lXWvHPAlmyx3cuGEbGWEp4nQz4FN11jE40UakKVTg/DXMsn8Y6AZwUE9GrJHEBTrnZngmgvtmfLVvy+gxkNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000156; c=relaxed/simple; bh=hX8yCnYWnHj0i6qWj2AAinoE9jeXb6HnLZTNJmXhByk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KtsoYjoJ5m6OlWK0k60wYbkETJ+VehIyu4UKDCpRXlhKg31515u9i79a4U2yTbCKQetXyg7XeakLvilfulKtqOmI9kIDfz3LFu/95biIICkwRfj96eeR0maLuK0H+5bc/1DeZaKGlzkx88/6NMQMrORX5Qdq88TDtxoz+abpdgI= 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=j0cHx36v; arc=none smtp.client-ip=212.227.15.15 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="j0cHx36v" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000152; x=1773604952; 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=j0cHx36vNfgHTENP4kzu+hIKnPHkyNfvVFqzM473wW5ldXoBJ1Bb7/MmOmXQW4Qu HaCkN2NDLp1UADQCsKC52dczjMSpkv70+Hz5jf1PnPSSLZbs6UGUOXu/3lt25ZW3s s8g6CpcEJqBEJd9xSmVrtSY+uLtf7ZnGX7GlM8D2MCBwRqJMX90f+CQjtg9j7K6wk 7V5Nsj0/g2ydhmNWp6IJXcCRjTrhs0P5SZCpqZJWTfpXTi4cbvOBkrvIyWCVRRn2+ OpqsKUcDjtoBmhfNl8sm7RH0OPIjVDV/f7j2FT5wykbEZuDE0Au9OTJdEY8QK3zDx IpSfmr65V1kPHVL64Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MNswE-1wJ32G10xM-00WKeN; Sun, 08 Mar 2026 21:02: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 v2 4/9] platform/x86: dell-wmi-base: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 21:01:50 +0100 Message-Id: <20260308200155.118950-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:iIXXICZdEHeNLjyAxSm3PuGNIIR2WHjZYttReVBdlu7Pqq8RGgF lAuA2hPOTDD3q0xeRQpY4XPSIMrfZLXMQKE9WguRAHA1acNomkTqpWNnGG0UCMsqz3xLcEH N+zf2RS91dipAN8QZMnJI659A1Qbuc1M6foSWvHt86Pmq9Z3NUoMb1hnFFwd/sZz2m1a9p6 BLySFMt5DJ0SF+/wLnySQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:YwndNc2of3g=;RWVcV+AJE9do+P50ndPWEqMpnVL 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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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (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 2473C337BAD; Sun, 8 Mar 2026 20:02:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000171; cv=none; b=dXDwpiUBZLqeuRwhjc0rpfkJqyScmBTw2p+4f77kI1XtbvDOkTwN/lKK4bKaqfyCdKxEGD4B7rYc3wj4Iiyv8pz1QzrlphW9iHdxfa0sSPrnPmQtL8RdfdzDQLabZdZqbE93wzb+oZnd9pi4Al3V5PTMY97gRiKpmsgGSeiSOpY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000171; c=relaxed/simple; bh=iPCUkxzT1pgRAs55EHDRcdwaaj7ZNbWDMLDA1ox4Qpk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ejz/GA99VnT75JqAXDOWwNag7CAiEXKz5WNG8RoOFbDjR45wL9DY0+KdSr1akE+lMX8vbtujm10qATbPhBdMYVzruVQHliyZeRJrJ4hiCE7RwAgkAxO/xTXk7qVoAzd9pzz+MO3PrGA0taGIANvxsQplSbzDboIfQiiYv4Tyruk= 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=ABklgtef; arc=none smtp.client-ip=212.227.15.19 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="ABklgtef" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000154; x=1773604954; 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=ABklgteflM5p7fec5bsEG5zl3emcOS7HHX1vd1rhP/5hO5hglz4NqE44JK4wIfSw 72NAh7byA1gSvedtsOWcQD7ZRSdcP34YrLfr/mUaXlH+dw/mbQX7sNsYe83Z4Ny81 JSX74sh1PUpIe3f+/e+y6vfqPIjCj4z2HjXDLYZwaG0FEub53iuRVpu2pv6a2d/Yt Z4PnIAu8af3BCowbxOsm05HFWPa24ZBUd25U2sZsn6r22UMY6n7nsQCJzXQn8fxXX S67y492ODVWFs1ysbRkj/1iOczAnNXY/rtyMZ7s7/V2nSSph+13bkC2Gkct6OZ3go cWPcehgL/EWNL/TC2w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N6sn7-1va7Rl1Ced-00vneW; Sun, 08 Mar 2026 21:02: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 v2 5/9] platform/x86: dell-ddv: Use new buffer-based WMI API Date: Sun, 8 Mar 2026 21:01:51 +0100 Message-Id: <20260308200155.118950-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:agqDYl1amNZAOqZsDdwMj0Ro8DFvRIu2EccX843iBJSj1OYknV3 JMtFZtYatvtHN2LE7c4a78OS02hyhmlYnn+9/iPjtRqsejNHOM8JJUiaBpvSI1aZ+VqlrOx IM84wVCM2TMWFW3WVJS5pN+QEsOpEmuj/kx0A5GxP4XEhx22RpTM0vMOcd7KwKc0EOXv9sq c8lHsOW0E26o6jZba8trA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:56KPh5vds8w=;25x6t0wbCCYBmtbKZk4JjTMoZud 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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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (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 3E92E33BBCD; Sun, 8 Mar 2026 20:03:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000181; cv=none; b=YkW5rT+mMK/ffjqkpLaYpMvczCO1BuRdpU2wcJpaEJpXteWv74VohSkUuEAErBrhd+Drh1C5u40Kv2hJ2zrn78T9P9+KoM8Jt0ImWnI6oq8RkhvnZgVoSS0Kw6xe6WlzaXHpORs0iClDOzX++Ey0X5TxIErGmB20cqfes4r+f6A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000181; c=relaxed/simple; bh=VZ037bVoKHx6d0+/fnvPmEq+HXUmoCiQ5vTAW0kwpSc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HdBYz9sy08v5wdgHMvCvb3hRg343v5AVFU0D4RL/vht3jILhfD3TlgCYuBrp49KejZvOtiWXZ67SW0gF6YZyqX/i/DxVbz3D/yUaztrw6n3lGfgyfTu/GVZYpwyBhD+lN3xrrvCQNr1s8Zvfyk3/9++zAEs7X086AZ8iPJcN12o= 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=bS9N13N/; arc=none smtp.client-ip=212.227.15.15 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="bS9N13N/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000157; x=1773604957; i=w_armin@gmx.de; bh=/vcRDzeKtfvrRs2Sq7LBTqeql5RXsrzw1+DjSN3jROA=; 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=bS9N13N/a+hYxqt7QZ32Cm0apVUDD4U9YRnBkc7QOByjaGj7RfmNOt+xiPu8VqeJ JqZjPiT9kpMF55YYHQG47O0yclL/Tgc/ECqfi8AYTnnIJEmZmA/dTb4fn0J3LKQQ2 7gOGnJrg0XfwhE0OWcJtUqh/yXqHR2rDBsOtnps57iqxhjqjiYwJrlToZA8T39cuk Hn87OTzSAQ2PZZjY1sWzeJfxmmmAiOKRGAe3gKJZJAXW1gE0C8Hksrlda60TKT/Jq NaLROdFOEuh6X543JmBUISTo3Sxt+oP6gR8lVoTENXDJCF/e4EWiZSD31qdKhaFv2 vt9/NE5eyCtCy5uVRw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MNbkv-1wJK9X38t1-00WIIX; Sun, 08 Mar 2026 21:02: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 v2 6/9] hwmon: (dell-smm) Use new buffer-based WMI API Date: Sun, 8 Mar 2026 21:01:52 +0100 Message-Id: <20260308200155.118950-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:vVyvakVh54MW7fgdOGYeeHRgBhgCmVdzAJeILLnqFC3/+v1olMZ PDh4rQJewCw0lARQ/5g7cfWfEasYVZO+cy3m+iGPIPo2eOyBfhJfO4Z+vhs7iEc0N+WOJNt Wfd0uoM5paA57JK6socSbXlI3RpM/ruPYN2y2CumVGLLVWjyUf0SlGb8JDF4lGBWhMgWs5s /Js4IyX7U8rqQkw96w60w== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:JRlWXRVy2+A=;lS4Zwsge2cozLX3H2kPN3/I8NAs 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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 Acked-by: Guenter Roeck --- 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..82aa626fc4b8 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); + 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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (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 7A2B23290C3; Sun, 8 Mar 2026 20:02:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000176; cv=none; b=CCMPL7WrIfOX4g+SZoLoehx56nrnqrn1jLCNViR9Pm+5sqYGe19okrFfmKW5u1yzzbyWmqQS+qsJdUQLWq7iIVzj7BtkvzHId4bKdXlsTpwnVd03udFwm9/E+bIPoJ8fc8pQtM4ynKnfnyLcLlXPjZngFEsnizWNFtE6Jveh9GQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000176; c=relaxed/simple; bh=XkCMJ7ozZ5TIFut03c48XQ8wVAkXKSmOEqRVO85lZyc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cXixH9QW5GFuBEMQ40UdF8oeBweHex4mcOR/JtwWljRiYaM8QKIWwqTCvAkKJKw/WH3AikaDiXMgPRwQA0T9ywaHmx0fkfcN7OO1G0n20luVf13xo97hq2YwWIdIQO4cyr5uUjSLdQJLNPu8w8yvDWSPWNIgSoA3usqO2DvCAEk= 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=oak/foso; arc=none smtp.client-ip=212.227.15.15 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="oak/foso" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000159; x=1773604959; 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=oak/fosoGxf0htf5/ZAfaXbkgCUtQ10CRFpjeiSATXJ0BjHASdG2lmb0ZhG6b9hP dISlgG8MKnYht/DBxfKlHyZlDTNXOD4q4ArEeU4XCtI33n/XN5wKPg4bOyq8DsikP EXUxPvgBgfGIUezRt5uKiqmclM2MDPg6NiXnGaMaF/o+Z1FtNOVMy0V9ZLThU9OOI HjAqrNaywCJUeuy0xLotSQTbyekB4L6O41jUZoodt1SAKok+QLqiEwa9+BQDUuHie v3M7K493uQKIbVZnOTOThHzixQjY9ZL1FmmBo6J+CQZsNCTf+u3ixt+vGPun84QCz L5QJxg3ELVaAp1IdJA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MiaY9-1vTXsf48pz-00p3nj; Sun, 08 Mar 2026 21:02:39 +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 v2 7/9] platform/wmi: Make wmi_bus_class const Date: Sun, 8 Mar 2026 21:01:53 +0100 Message-Id: <20260308200155.118950-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:+3L7ONRf3gwAY7aiZEn8ICsNB6I3mRGfKWc6UrH4ra1oKLPXWzL r0vBqUdwzQ9vAI3jSpPLzKmni5cEevadLrfPirRz00grAWu4KkBIe/AiyAF9F6iRO/AAswX wN2TFBQEP3kNjn3Z82mWLz2WNp2rbaa9xDJeqXD3qxprX1t9Yvxld1mBD6zd5HgUIFQ8Hwv Ci7TwS1LTk2rPLR86v3FA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:XpiX+rQo+Jg=;R9ulrWKfuvNPTqpavr820tFewp3 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 0zX0Rszk= 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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 E9BB533A6FE; Sun, 8 Mar 2026 20:03:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000184; cv=none; b=by78Zh0cHslimr70OO4uOn6jnNiMAW61cf6QjUNUat6Qz5Edoq4DfsVtyEX74pxhGqt4ff3PL5Ehjt+KnjpSVUMllBpWp34adoU+QFTrdcggWmwuP0vNPeRyNLiAA3qV5MvfsdDi1Kh+6uHzCYrbzvTKrccFtnngcWvb3tSruf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000184; c=relaxed/simple; bh=/eGwD4fhg8LTJnCVSRrW0gkeOJMBW8xCMHNlNZwM9Oc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qrQ9kRAJuwkfcEgYgYrUb8/4nblQjQ8Yi+G7YKwm97Lul666vNub84QKxJ1Zgi/ulmO9JwfWWpq8oNoCbTYl4LxzhyMPkOQTuPKWo+RTfFcJAAms7KV4Z/11oShsc/qWALEs00PYIHihBz+GPsqWtcSw1v6zxxFpHoDLM99ysro= 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=COLvMSCp; arc=none smtp.client-ip=212.227.15.18 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="COLvMSCp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000161; x=1773604961; 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=COLvMSCpMRE7gGpdge4oKNZ1bb8BER7G9Qvj/8aGyyr2S4LfF5YjZh5OT1WKNgPv 8R/w7Q/PCoc8i4iPbyrt/+0ztziwy4m888g4Wxt8J9wMOuR+Whmb7lC4ikOqQft4s CO1OqLhTJ0quuHfHIB7xyK/GoZml0Grd2WnwCS0eTXVsPIyHljArukXFxPojvOQLa 1RO4odEH2GVblozEu1zYkeM3DEroO1B4aJYQeEPf64MFXWTSTAC2KPWETks1x3hl0 T+SyifMr6btER1OTtVqgdD5CMyMA91pN1xA9T+3AnefdSrzuBFsxeXklRokN7O+Kj yVbVxSlnNSqa2Tt03A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1My32L-1vist41v4B-014XAB; Sun, 08 Mar 2026 21:02:41 +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 v2 8/9] platform/wmi: Make sysfs attributes const Date: Sun, 8 Mar 2026 21:01:54 +0100 Message-Id: <20260308200155.118950-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:Bupesr35kr82y5IdEcm6w3msXNtkzJnj4aTG3wmJ23BY9xR2RYF Iu3nz+3YFRzDhV15xvaAzbtTeurcRUgXOWKsi+EkHBCDoOu/i/hwYz60kPk7LH8cYrZOjcT Y/jNOdgEaQCXu/IU2tps8rWq7m/vYnQ1IkzPkoBieiuUVI1fhT9NeEOuMC9mazMhiNlj51F zz+lvCPAmAJKOeV4AkBsA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/4/uP7pG3VM=;N+gGpGunFfLZhyMDITenTJAFAGG Ar4W2TlPiQRnl3vUTV/2vnXeja+17WGQmepBuSfva4Fq8V3iyu+w6Z1ntFEt+B4TPTVXGHg+W eCROa5dMYaIS+eE6kGlX0Ebita9i9u3RQ5dS5kaQWizpbZB7flV/ib/opVAtt5wM3Js8LdnCn edH4q4SsrCHtlzLjKlVlzhktZPuhNQYKYjYnK0QMknwinqxgssFkTyoMKAG/HegfUwDitBt3v eBTaB8PLnunvy2UpfjdNaTW0dXiVxtuhfxsLLpe75LbG2oTaBjHbZqrUv1jOEAc5raRx/DnOW WCNoqRHJrugkORFXWYBe08eWE+0EmWZYIH/CmpFdEtFyRD5wtBoh/Tmx/7sX42maSXzoFMuMb b3NXnf1OEbgF5pL5l8bR0Jo7JOQYBHUikjAr6hgdz2EC1zPIrtlzHJ3F8yrxji6oEP1V5U8Vv XS8xrqKlf+/OFjpUrhIZJHUnygqGgKnaiU+Q0QPNYUjBRVkX3GxVVWZN8i8vIiIiSYUVJMQ3I C42RpHvutTn2gdlT69kIz9VfWCwAZM/DwrN06UkNZ9z1BIQM8w/l4OrIH2tnI6/3sf4GZskjz bbbxOOMYP/nZgHpvOSEgY/5BDtYCNiYVuOwTc9w04yHQZVeuzFCHDQyZvLTzOSlKbK+vZTgkc Gz5rcqQDlIoqsNKIzDW10OWELogIyxwQNvPYoW1KbslD2hQkCDBkIM3JaY++AxWmLVF6g7ryT r/w2mZMWoHtZN2iz9x5fzKs9l6xUw4hvdplF5FTMY4GXKALC06eXcrtJpUc8yrh6Siu1izTHP anf5WuIR1dW2hPVBq7VeE7+uiTKgeBSoy3V0eMauvkaUasMwPN2YudPotU1wOL/D30mci4bW3 v1s9sf7jNhfXEHrfAUmFKuk76exzXujq67Ju/sjA6ZznplHhRcK6dGXUENF2NevmKkjIzLTxL fGPj1rQ9UVZQlWB3r9y4fMhsaCnw9/ZEezCMVvbdMCuKHQgbNM9jr3Imq6ts840lSbkrMPYrG oP2ikBjC2ErKdPCZpfDLbz0Yh4/aJty0wI70SJ6PdnJ2sjLkXjce3wOyTj/2CL5v9GOr+AYiz jP3T/At2Z93fOr+qd6sML5Gy6ECLH0GUva9hnzi3i9+/8l+GK7prpxf2vqptRCEc7hMJySSjI RY6tQ0edHtX1pb0nPPDW2j5ywB0ehG8Kz8J0+TZt2MuCyYEDqnQVdssOuS3D+Npug5eVhgYRm vHckxOKHWON6pts349MPZxVCyPK7I/cyo9IFPsQJxMhLDeBrDX8uyMj/tmiOhTCQ4LpLBQx4D 9X+oWBuYWJ8DZYn/phTsYxDSTVsyAHvl3eEmJbRgj64wlKNHCb6Fv0n4UWUJEl3YxJp4/wcK2 hb4EthT/Nv8JFsh6amkfk5c9ZaJtp8hFnNI7P9giWiPZdBnY6Uaqapm+5zk83mM5FEAOI3g2X O6LIBe9qTD5UsUUvi8ZOjdCN4pP1KlOacwdVmDVzHhiLedtQtYUGMSuV1ohg8cCNNfcvAcJYq J0gTnMP39iRUZeeQjKTF+YSqCGI7oNIQVmtnlXETOZWZ1TIT+RbpDlvkaU5ntbhu0AZaRJtIX pnLwbQfJik0SIR5G9G0z58sx3K86iK7C7O9JScEbf+uXXW5uC4O1HZH08h5yQ5pQ90UPmEC8d E2li5KqYYOyiAWSsYJcyBdvZoPg6VT5WKuS+yTIpzvS20nmpqr0nP4ByzKFlA4Mnl/qYChOIp Er6V6/l7avCS1z3r5BHa2H3RdTckOpMIF0QXJ3oPDisjkoiH2M6TlCLXUzrRjAHzCJvDdjWqQ vcCOVAw45Ie0o6F+1BlXQE1hCZ7hMs62de+dG7YLZeatxhYadyFts5yod9apcodX8gFQ+/Swq 3oIYm60ycNpaaVPuj3lgux4ZKAxcdGeTukFtHxHNkzqJQ5DASrf8qyaOhc6sRtnt2vvVCSZZ6 7D6qdebsLessa6b957I99dMiQ4aXmDDkk4hMvIb17sVMRK7dA2zMs+1pPcbEm44S2AWWM83lr JqHDKhJvbACkLa7BE8AvjnE/r8lzrbF7w09k1j8A//2l5JTTcCS7Eeyuv0oixLN2MPOWHLDhO Uri2dmoQp87jN6VVwXDEIUEpjjn8BTb5czYMXllYlr1pA2/vPiN8XJlddrTiTc59/WrslDMAF ywCpMGl28S0N0HIWYUxbRyneEyzWMIFQ25RgIOhly//PplThqY/XbYPAKgPnEhLrf7YphG2qe Rz7+JFyyxU5gsudexb3onhVe7nlNvtBdygywvIzqWRMlIAlpDy2J8lj+WZtZYNXfzEJaoywCD dGY4dMwUZMLqMm1ck8V60rYFZyTfDbDMZj37zIiM1h2NIFqAVRyCLkcciN0cNKWRGA7PdDeY/ oO2aRUewTsm4vLRrFEuOW+MRKC4TQu0fOtzRMGkkggDWxne5Lu0CK+17KWq8wCO5n21nmsrDc UsByy8w8RuHH4630ca5nXhHXgoQxKDam1E00OJXalW/1MzQxHlOqhFeMyMQQppKaaqrSNc/y6 7nJC7JEys8oQaVw8SMlFxgAJsntRgiTJQEXhOgyMdWnIbLcBC81IyG2bRnWv77jeYPT7Fcewv TSUZDmyrGbNzZUamPghwFDX1WNUX0bjPc0y+ZvpLYaqM/+SeQUAtP8mtLHqTUfY7NBiZYwJP8 PyE3lwVcmG3osSli8K//mUmvHd3ou61aawEGUO9DOibbX2Tz6+gZp/uEN7McBkTCsB9TbXalE IULREGev3AHxd/lTWUUQ7I59j+k0DCUIolS5z7MkWSyqmDKPT/SA2yX3mQN71Ls9rSd3e0I2W QXiM5MpbG4QuOvXhvEGJ6bT4UhSlrg/SdVu8rYwoKEfVbZhmn0+A47AfUl0O41+qCPFIudIfh phFAlVT7VvozYq4jySBHHSd3WOFWtpM9+Xvoa6ojm4jNth6BTEmrwP/NLet6MiaVQCbXx1zwS C3jCv5C03HO8s3exLPRGxCuXRRNwl31kmajhe02QHDXyw1al1pjrlTvQbCZGHb1ll7oCBVHxv 50GJrxVgfpEQDItK5lS6aujBi2jtt2kuYOjdmU/9HLXtItkZv6gycEP0VQG5VpEqqfInsGWB3 3F/xJ7JP/sQAoHvIhZeQDEuO/rMWJpuvP79p9GeawHtJ59hVboP1vYkhlGS22zrhT2kTmetEE HRIrd3oA31WwvhdPTq+2VmTKlPmpSHO7tbbypMGRx9Q+RVkigCRzCidDD2AIMTW5gMDUp+HkH H1fmbkktg8cacgC/CDFwkT7cyA3A82mN9dHNv76Z4C4JjkL1QgQQJUZ3AZdpg+rar5LgitLNe raIPg5RrYeHG5r1Hswm71Mm62r9IdnDXFjwwmgJ/aP5K8awhI1TzNUMqjWfoYopEypa6HI7jT D5+cj3uvVVEVmf0A95+1epCPyIPjt6rggKaTJphYbhhbpKv+9fikZjkzTsADJM26Tcq7dx1/f ACSkIgSLFn2Ke5CpY/XdJSV+SYpNETEU07JMIRPoM9hiktzToyVIbyWvobizn9xOOSEczluLn 8eOJliMHxHZSxHwbLiCHSNA6DTjBYYJugXSrhiqlzSeLBDO9qN3Zy6aIht76SZdT4ELkd8fR1 c0JIIpghgz1WPEuqy9GJV6UbbQmPdtePsdSPQLByU9My8ewPEAdofdzy+i2/qbtkDqPhTYHgC DYShS0sHS3EYvgH4EgVBI9UkkmxHxqkHLQqV8wRVEiGWOZg4sH9vxi/6zzAmQYIBYCNRWozXr yC6ywuQMtNlHK8NYpH56SsQq+S0FPiFEwo+RHLYc66x+MVnP/40M4quG7RZeEkD016ED8hGi3 tvjlUfomG3+OzvmQlOkVJ+DYV3lMYHVdfYEqiiXFWR7XK67lXAp71Z4hj06yzfNpgvbEPqRKv XooNE78D2eF30bZGudFmAmmoO/y8hC/dVk1NEFQsgLxhOy0ZIVn95O354S51QAmRhg50oyKUO 3phlPXaDhBueX0yF9nLoaxSuyQ0fCgwVOGEX+cz61ukjQ/OynyHCNk/rQQG3Qq8Nf8idpyTWM H8LALtdmggX1bBb4Ekg4/DSqfCg5/3b+zsNKKd+GBbRWnXltkBdIMOaTM6dqIBKtle2TQhroo 83WUz1fcuVmbqzAhtAbj5RCaiUcGzIOLxVgYQwHHWP5ZlOdyQ0aSRV1/k5VSmUZ6p7Ege9w4C lLhHzdLLoKlBArx6Pm+Q67GuAdWqHR7+M2hv6oh9FBOFYJqmmpD8uYY/JymrTCtri7u3USmEi BdJHr04vdK9ljfI0jAihAiA0JSYdJ+duNqdXvBd4nBbhOG9GBnuI7xylY9UgFMf5EaVpYyuYS qpGkDLOzaM3Oetq0lHgdHpM3Kvun68EaEFsdy9EZ28t/0DfRy+sqqB+6mf/oTWWg833SdfOka P1OkwtwVrsXsG9VMCFyucBB93nLSgHJR9DS0cgNYXKUqEfqIRgqVMJjP1Z16BpfuTZWepGPVY OFC221f6M9U0RE0rYcYV85qxgguZqpB8C+ogMdqNZkdE8WCq0tPEDn/TfEyswY+iVMrAy15G/ SyVsa59FK6QuROgmwpwpARAFa7p1wOVVkqRfU8NJEyO5mLwDBRG44CsecJPiccULDB7iv7Ih0 jyku7/YKhjgMsusXi9ZDyMHu7twBBNBun9Mmiml/9a1+0IbsW7eWpff1mks1UfNKB41r6Y/IT Po7Sa/igHR9kGGwiPwn8cUephmnDvyx+E8l2ic1Iyk873ww43gRuCHEupwd7d9miNyv2t//Jq rSoKXlJ8oMVhllGkWlqEfRkgh4M7asMhlLZPZSnbDbHjRdJWmeWHWT5fNOYMqVOwHe8iW4FHc 319kXY7uI8lalbZArKIJU8h0tnkVIx4pGar/fKy1uHXpTvjwk2KemtNhrZwpZBLP3qphWtUaE RokZDSQ8BAOSRkRywuqrff8TVHdPycdauF02jvXn6omRXJmbdiVF78tunqNWhwx8djSVemgOX XoPqDaGw8PLb3AujtjKSFZbnwTViwSiWz2tQg3T0xxzRApcTfyyX3BkN0S3Y49vGlSpDn1lkA jXeYVyYH9qj0Feeqc0srvk14str4T6eWmRDi1vAuLs6H/DiRzE1TB4UPQAV4XvaK7xJLpjdbt m180yP37UsavK4yaq0HINao6wvOPR9Fd/UgKydSBKOKm1Hgsgz2Ks8p4H4YBaxVXq1QjqRLII XOGXmabR6RaESe3Yv4abYjzvG0dCV 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 13:32:59 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (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 7BA2033A6FE; Sun, 8 Mar 2026 20:03:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000191; cv=none; b=SdmrdBwBJY/FF6ziq2tuaHIgR4SJVaak1Tyx6BF8uv2wBCPPhtWatSAskjmFnJX69oLLVwvdiXQ8ZKpVry/sriWkS/IfnRwzMEB+PMOEhAC4RYB+casVfe5GWX8q3OqPCp84JA57vF1C4q86IqmF7rZDBk5Kr6mPcyn06Q51Nzo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773000191; c=relaxed/simple; bh=EIEAIMAWlivOEsKWrFH805avfGEQHpaDoGyT6YNUhJI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=c4/dv72clEaP1ZO6bANdKbSqK+WYAcE6L6XHuuDi6Ax0zea0ExkPvq4dG+Own4auNV5uUfr3sgi1hNDm0SlDDBf3dxMNc74YxP5XTTVUIUCv9XxAOPb8s4xT/eNyUIgw2Dwzu0Ck53bUfTCe1P856auy6jQemy2J8gcn2sGBqqI= 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=Ojma0o3V; arc=none smtp.client-ip=212.227.15.19 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="Ojma0o3V" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773000164; x=1773604964; 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=Ojma0o3VhUDIMZbuLGdGMeTumS9W+MULy6pzM3E5lJmfd9Gx4IkRqf/mCcUI5CQH 3mSxS5eGNftTz5B2/uwePwDG4E8fPJGjsmqr/WhUAqPenPwd9mpS/AagkijeRWBy/ 5dboQvLWfEN7eQOMiMpqEyAkhhExB5o8sSsKFzZT9Wet9f5aVldhSJjkyM1rJrgl0 i+16MKaruM7HzFhrRIQ1ZaLBq2f3wXSbSOLwlVg2Md79aoLpE4ZF/8k288WeQs4s+ DTvqraoHMHU6Fnv2QO4pc400YWDheNIPG6S7ghWv+E65izWJSeUOaXwEuVIGnnGNH tJiFL+kJkPFnWhWbpw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N9MpS-1vc2BU1mkO-00xjdB; Sun, 08 Mar 2026 21:02:44 +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 v2 9/9] modpost: Handle malformed WMI GUID strings Date: Sun, 8 Mar 2026 21:01:55 +0100 Message-Id: <20260308200155.118950-10-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260308200155.118950-1-W_Armin@gmx.de> References: <20260308200155.118950-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:MYcgl7ySGH/E0JSSdxRWfoUmZ1Wx37wOEhhczKpvwaL4CEAtW9f A6KUpXsr2HuYP/FQQrn44YdotBA7A/LFUW6wBFJDlt2Wgh6p1HFdSZq6XVDzXbeskoGpoa0 deXz5LpUMNEeSttiucXyZSfzVHkr39NM5rMrS1HY8a5jbMz3AX9HfBpQg3Z6yOZN0SE1gbl 9rOSx6ljtF5QZJ2o1qf2Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:KTZuMQdA3pM=;xpKw6wuPtKG2e1YI2x8/HBeoLpc 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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 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