From: Greg KH <greg@kroah.com>
To: Mario Limonciello <mario.limonciello@dell.com>
Cc: dvhart@infradead.org, Andy Shevchenko <andy.shevchenko@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
platform-driver-x86@vger.kernel.org,
Andy Lutomirski <luto@kernel.org>,
quasisec@google.com, pali.rohar@gmail.com, rjw@rjwysocki.net,
mjg59@google.com, hch@lst.de
Subject: Re: [PATCH v5 10/14] platform/x86: dell-smbios: add filtering capability for requests
Date: Sat, 7 Oct 2017 09:43:33 +0200 [thread overview]
Message-ID: <20171007074333.GC25755@kroah.com> (raw)
In-Reply-To: <169beca316d562d00dc3dfb45248f42c9dc5d368.1507350554.git.mario.limonciello@dell.com>
On Fri, Oct 06, 2017 at 11:59:54PM -0500, Mario Limonciello wrote:
> There are some categories of tokens and SMBIOS calls that it makes
> sense to protect userspace from accessing. These are calls that
> may write to one time use fields or activate hardware debugging
> capabilities. They are not intended for general purpose use.
>
> This same functionality may be be later extended to also intercept
> calls that may cause kernel functionality to get out of sync if
> the same functions are used by other drivers.
>
> Signed-off-by: Mario Limonciello <mario.limonciello@dell.com>
> ---
> drivers/platform/x86/dell-smbios.c | 76 ++++++++++++++++++++++++++++++++++++++
> drivers/platform/x86/dell-smbios.h | 2 +
> 2 files changed, 78 insertions(+)
>
> diff --git a/drivers/platform/x86/dell-smbios.c b/drivers/platform/x86/dell-smbios.c
> index 2f90ba5346bc..d1908f159be3 100644
> --- a/drivers/platform/x86/dell-smbios.c
> +++ b/drivers/platform/x86/dell-smbios.c
> @@ -32,6 +32,7 @@ struct calling_interface_structure {
> struct calling_interface_token tokens[];
> } __packed;
>
> +static u32 da_supported_commands;
> static int da_command_address;
> static int da_command_code;
> static int da_num_tokens;
> @@ -45,6 +46,14 @@ struct smbios_device {
> int (*call_fn)(struct calling_interface_buffer *);
> };
>
> +static u32 token_black[] = {
> + 0x0175, 0x0176, 0x0195, 0x0196, 0x0197, 0x01DC, 0x01DD, 0x027D, 0x027E,
> + 0x027F, 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x02E3, 0x02FF, 0x0300,
> + 0x0301, 0x0302, 0x0325, 0x0326, 0x0332, 0x0333, 0x0334, 0x0335, 0x0350,
> + 0x0363, 0x0368, 0x03F6, 0x03F7, 0x049E, 0x049F, 0x04A0, 0x04A1, 0x04A2,
> + 0x04A3, 0x04E6, 0x04E7, 0x9000, 0x9001
> +};
Any hint as to what these values represent?
> static LIST_HEAD(smbios_device_list);
>
> void dell_smbios_get_smm_address(int *address, int *code)
> @@ -104,6 +113,65 @@ void dell_smbios_unregister_device(struct device *d)
> }
> EXPORT_SYMBOL_GPL(dell_smbios_unregister_device);
>
> +int dell_smbios_call_filter(struct device *d,
> + struct calling_interface_buffer *buffer)
> +{
> + int i;
> + int j;
> + u32 t;
> +
> + /* can't make calls over 30 */
> + if (buffer->class > 30) {
> + dev_dbg(d, "buffer->class too big: %d\n", buffer->class);
> + return -EINVAL;
> + }
> +
> + /* supported calls on the particular system */
> + if (!(da_supported_commands & (1 << buffer->class))) {
> + dev_dbg(d, "invalid command, supported commands: 0x%8x\n",
> + da_supported_commands);
> + return -EINVAL;
> + }
> +
> + /* diagonstics, debugging information or write once */
> + if ((buffer->class == 01 && buffer->select == 07) ||
> + (buffer->class == 06 && buffer->select == 05) ||
> + (buffer->class == 11 && buffer->select == 03) ||
> + (buffer->class == 11 && buffer->select == 07) ||
> + (buffer->class == 11 && buffer->select == 11) ||
> + buffer->class == 19) {
A structure of class/select that is not allowed might be easier to
maintain over time, right?
> + dev_dbg(d, "blacklisted command: %d/%d\n",
> + buffer->class, buffer->select);
> + return -EINVAL;
> + }
> +
> + /* reading/writing tokens*/
> + if ((buffer->class == 0 && buffer->select < 3) ||
> + (buffer->class == 1 && buffer->select < 3)) {
> + for (i = 0; i < da_num_tokens; i++) {
> + if (da_tokens[i].location != buffer->input[0])
> + continue;
> + /*blacklist reading and writing these */
"/* " ???
thanks,
greg k-h
next prev parent reply other threads:[~2017-10-07 7:43 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-07 4:59 [PATCH v5 00/14] Introduce support for Dell SMBIOS over WMI Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 01/14] platform/x86: wmi: Add new method wmidev_evaluate_method Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 02/14] platform/x86: dell-wmi: increase severity of some failures Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 03/14] platform/x86: dell-wmi: clean up wmi descriptor check Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 04/14] platform/x86: dell-wmi: allow 32k return size in the descriptor Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 05/14] platform/x86: dell-wmi-descriptor: split WMI descriptor into it's own driver Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 06/14] platform/x86: wmi: Don't allow drivers to get each other's GUIDs Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 07/14] platform/x86: dell-smbios: only run if proper oem string is detected Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 08/14] platform/x86: dell-smbios: Add a sysfs interface for SMBIOS tokens Mario Limonciello
2017-10-07 6:54 ` Greg KH
2017-10-07 11:56 ` Mario.Limonciello
2017-10-07 11:56 ` Mario.Limonciello
2017-10-07 12:39 ` Greg KH
2017-10-07 4:59 ` [PATCH v5 09/14] platform/x86: dell-smbios: Introduce dispatcher for SMM calls Mario Limonciello
2017-10-08 15:48 ` Andy Shevchenko
2017-10-08 18:13 ` Andy Shevchenko
2017-10-08 21:45 ` Mario.Limonciello
2017-10-08 21:45 ` Mario.Limonciello
2017-10-08 23:10 ` Andy Shevchenko
2017-10-07 4:59 ` [PATCH v5 10/14] platform/x86: dell-smbios: add filtering capability for requests Mario Limonciello
2017-10-07 7:43 ` Greg KH [this message]
2017-10-07 4:59 ` [PATCH v5 11/14] platform/x86: dell-smbios-wmi: Add new WMI dispatcher driver Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 12/14] platform/x86: dell-smbios-smm: test for WSMT Mario Limonciello
2017-10-07 4:59 ` [PATCH v5 13/14] platform/x86: wmi: create character devices when requested by drivers Mario Limonciello
2017-10-07 7:34 ` Greg KH
2017-10-07 11:59 ` Mario.Limonciello
2017-10-07 11:59 ` Mario.Limonciello
2017-10-07 12:38 ` Greg KH
2017-10-07 4:59 ` [PATCH v5 14/14] platform/x86: dell-smbios-wmi: introduce userspace interface Mario Limonciello
2017-10-07 7:41 ` Greg KH
2017-10-07 7:43 ` Greg KH
2017-10-07 12:15 ` Mario.Limonciello
2017-10-07 12:15 ` Mario.Limonciello
2017-10-07 12:36 ` Greg KH
2017-10-07 13:13 ` Mario.Limonciello
2017-10-07 13:13 ` Mario.Limonciello
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171007074333.GC25755@kroah.com \
--to=greg@kroah.com \
--cc=andy.shevchenko@gmail.com \
--cc=dvhart@infradead.org \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mario.limonciello@dell.com \
--cc=mjg59@google.com \
--cc=pali.rohar@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=quasisec@google.com \
--cc=rjw@rjwysocki.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.