RE: [PATCH v9 07/17] platform/x86: dell-smbios: only run if proper oem string is detected

From: Mario.Limonciello
Date: Tue Oct 17 2017 - 15:10:47 EST


> -----Original Message-----
> From: Pali RohÃr [mailto:pali.rohar@xxxxxxxxx]
> Sent: Tuesday, October 17, 2017 2:04 PM
> To: Limonciello, Mario <Mario_Limonciello@xxxxxxxx>
> Cc: dvhart@xxxxxxxxxxxxx; Andy Shevchenko <andy.shevchenko@xxxxxxxxx>;
> LKML <linux-kernel@xxxxxxxxxxxxxxx>; platform-driver-x86@xxxxxxxxxxxxxxx; Andy
> Lutomirski <luto@xxxxxxxxxx>; quasisec@xxxxxxxxxx; rjw@xxxxxxxxxxxxx;
> mjg59@xxxxxxxxxx; hch@xxxxxx; Greg KH <greg@xxxxxxxxx>; Alan Cox
> <gnomes@xxxxxxxxxxxxxxxxxxx>
> Subject: Re: [PATCH v9 07/17] platform/x86: dell-smbios: only run if proper oem
> string is detected
>
> On Tuesday 17 October 2017 13:21:51 Mario Limonciello wrote:
> > The proper way to indicate that a system is a 'supported' Dell System
> > is by the presence of this string in OEM strings.
> >
> > Allowing the driver to load on non-Dell systems will have undefined
> > results.
> >
> > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxxx>
> > Reviewed-by: Edward O'Callaghan <quasisec@xxxxxxxxxx>
> > ---
> > drivers/platform/x86/dell-smbios.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/drivers/platform/x86/dell-smbios.c b/drivers/platform/x86/dell-
> smbios.c
> > index e9b1ca07c872..7e779278d054 100644
> > --- a/drivers/platform/x86/dell-smbios.c
> > +++ b/drivers/platform/x86/dell-smbios.c
> > @@ -172,8 +172,15 @@ static void __init find_tokens(const struct dmi_header
> *dm, void *dummy)
> >
> > static int __init dell_smbios_init(void)
> > {
> > + const struct dmi_device *valid;
> > int ret;
> >
> > + valid = dmi_find_device(DMI_DEV_TYPE_OEM_STRING, "Dell System",
> NULL);
>
> Are you sure that all Dell machines have exactly this string? IIRC this
> smbios interface via SMM is supported by machines back to 2005... Also
> in other DMI tables in dell-latop there is e.g. "Dell Inc." or "Dell
> Computer Corporation".
>
I checked the spec and it's been there since systems 1999 onward.

> > + if (!valid) {
> > + pr_err("Unable to run on non-Dell system\n");
> > + return -ENODEV;
> > + }
> > +
> > dmi_walk(find_tokens, NULL);
> >
> > if (!da_tokens) {
>
> --
> Pali RohÃr
> pali.rohar@xxxxxxxxx