firmware: dmi_scan: Fix handling of empty DMI strings
[pandora-kernel.git] / drivers / firmware / dmi_scan.c
index 612d0c1..bde7ebb 100644 (file)
@@ -14,7 +14,7 @@
  * of and an antecedent to, SMBIOS, which stands for System
  * Management BIOS.  See further: http://www.dmtf.org/standards
  */
-static const char dmi_empty_string[] = "        ";
+static const char dmi_empty_string[] = "";
 
 static u16 __initdata dmi_ver;
 /*
@@ -25,25 +25,21 @@ static int dmi_initialized;
 static const char * __init dmi_string_nosave(const struct dmi_header *dm, u8 s)
 {
        const u8 *bp = ((u8 *) dm) + dm->length;
+       const u8 *nsp;
 
        if (s) {
-               s--;
-               while (s > 0 && *bp) {
+               while (--s > 0 && *bp)
                        bp += strlen(bp) + 1;
-                       s--;
-               }
-
-               if (*bp != 0) {
-                       size_t len = strlen(bp)+1;
-                       size_t cmp_len = len > 8 ? 8 : len;
 
-                       if (!memcmp(bp, dmi_empty_string, cmp_len))
-                               return dmi_empty_string;
+               /* Strings containing only spaces are considered empty */
+               nsp = bp;
+               while (*nsp == ' ')
+                       nsp++;
+               if (*nsp != '\0')
                        return bp;
-               }
        }
 
-       return "";
+       return dmi_empty_string;
 }
 
 static const char * __init dmi_string(const struct dmi_header *dm, u8 s)