On Fri, Oct 06, 2017 at 11:59:52PM -0500, Mario Limonciello wrote:
> Currently userspace tools can access system tokens via the dcdbas
> kernel module and a SMI call that will cause the platform to execute
> SMM code.
> 
> With a goal in mind of deprecating the dcdbas kernel module a different
> method for accessing these tokens from userspace needs to be created.
> 
> This is intentionally marked to only be readable as root as it can
> contain sensitive information about the platform's configuration.
> 
> MAINTAINERS was missing for this driver.  Add myself and Pali to
> maintainers list for it.
> 
> Signed-off-by: Mario Limonciello <mario.limoncie...@dell.com>
> ---
>  .../ABI/testing/sysfs-platform-dell-smbios         | 16 ++++++
>  MAINTAINERS                                        |  7 +++
>  drivers/platform/x86/dell-smbios.c                 | 64 
> ++++++++++++++++++++++
>  3 files changed, 87 insertions(+)
>  create mode 100644 Documentation/ABI/testing/sysfs-platform-dell-smbios
> 
> diff --git a/Documentation/ABI/testing/sysfs-platform-dell-smbios 
> b/Documentation/ABI/testing/sysfs-platform-dell-smbios
> new file mode 100644
> index 000000000000..d97f4bd5bd91
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-platform-dell-smbios
> @@ -0,0 +1,16 @@
> +What:                /sys/devices/platform/<platform>/tokens
> +Date:                November 2017
> +KernelVersion:       4.15
> +Contact:     "Mario Limonciello" <mario.limoncie...@dell.com>
> +Description:
> +             A read-only description of Dell platform tokens
> +             available on the machine.
> +
> +             The tokens will be displayed in the following
> +             machine readable format with each token on a
> +             new line:
> +
> +             ID      Location        value
> +
> +             For example token:
> +             5       5       3

That's more than "one value per file" which is what sysfs requires, so
this isn't acceptable, sorry.

> +static ssize_t tokens_show(struct device *dev,
> +                        struct device_attribute *attr, char *buf)
> +{
> +     size_t off = 0;
> +     int to_print;
> +     int i;
> +
> +     to_print = min(da_num_tokens, (int)(PAGE_SIZE - 1) / 15);
> +     for (i = 0; i < to_print; i++) {
> +             off += scnprintf(buf+off, PAGE_SIZE-off, "%04x\t%04x\t%04x\n",
> +             da_tokens[i].tokenID, da_tokens[i].location,
> +             da_tokens[i].value);

Huge hint, if you are checking for the max size of the buffer for sysfs,
something is really wrong, and you need to redo your design.

thanks,

greg k-h

Reply via email to