Merge branch 'stable-3.2' into pandora-3.2
[pandora-kernel.git] / drivers / firmware / dmi_scan.c
index 20f7daa..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 char dmi_empty_string[] = "        ";
+static const char dmi_empty_string[] = "";
 
 static u16 __initdata dmi_ver;
 /*
@@ -25,28 +25,24 @@ 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 char * __init dmi_string(const struct dmi_header *dm, u8 s)
+static const char * __init dmi_string(const struct dmi_header *dm, u8 s)
 {
        const char *bp = dmi_string_nosave(dm, s);
        char *str;
@@ -130,7 +126,7 @@ static int __init dmi_checksum(const u8 *buf, u8 len)
        return sum == 0;
 }
 
-static char *dmi_ident[DMI_STRING_MAX];
+static const char *dmi_ident[DMI_STRING_MAX];
 static LIST_HEAD(dmi_devices);
 int dmi_available;
 
@@ -140,7 +136,7 @@ int dmi_available;
 static void __init dmi_save_ident(const struct dmi_header *dm, int slot, int string)
 {
        const char *d = (const char*) dm;
-       char *p;
+       const char *p;
 
        if (dmi_ident[slot])
                return;
@@ -246,7 +242,7 @@ static void __init dmi_save_oem_strings_devices(const struct dmi_header *dm)
        struct dmi_device *dev;
 
        for (i = 1; i <= count; i++) {
-               char *devname = dmi_string(dm, i);
+               const char *devname = dmi_string(dm, i);
 
                if (devname == dmi_empty_string)
                        continue;