On Wed, 2013-03-06 at 16:07 +0800, Zhenzhong Duan wrote:
> On 2013-03-06 07:37, [email protected] wrote:
[...]
> > Subject: dmi_scan: fix missing check for _DMI_ signature in smbios_present()
> >
> > Commit 9f9c9cbb6057 ('drivers/firmware/dmi_scan.c: fetch dmi version from
> > SMBIOS if it exists') hoisted the check for "_DMI_" into
> > dmi_scan_machine(), which means that we don't bother to check for "_DMI_"
> > at offset 16 in an SMBIOS entry.  smbios_present() may also call
> > dmi_present() for an address where we found "_SM_", if it failed further
> > validation.
> >
> > Check for "_DMI_" in smbios_present() before calling dmi_present().
[...]
> > --- 
> > a/drivers/firmware/dmi_scan.c~dmi_scan-fix-missing-check-for-_dmi_-signature-in-smbios_present
> > +++ a/drivers/firmware/dmi_scan.c
> > @@ -442,7 +442,6 @@ static int __init dmi_present(const char
> >  static int __init smbios_present(const char __iomem *p)
> >  {
> >     u8 buf[32];
> > -   int offset = 0;
> >  
> >     memcpy_fromio(buf, p, 32);
> >     if ((buf[5] < 32) && dmi_checksum(buf, buf[5])) {
> > @@ -461,9 +460,9 @@ static int __init smbios_present(const c
> >                     dmi_ver = 0x0206;
> >                     break;
> >             }
> > -           offset = 16;
> > +           return memcmp(q + 16, "_DMI_", 5) || dmi_present(p + 16);
> >     }
> 
> I remember H.J found a typo in this patch and the following patch.
> >The patch has a typo:
> >
> >-            offset = 16;
> >+            return memcmp(q + 16, "_DMI_", 5) || dmi_present(p + 16);
> >     }
> >
> >'q' isn't defined here.  Change it to `p" also fixes the problem for me.
> >
> >H.J.
[...]

I don't know how I ended up sending this broken version rather than what
I actually tested.  Sorry about that.

Ben.

-- 
Ben Hutchings
Always try to do things in chronological order;
it's less confusing that way.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to