|
@@ -18,7 +18,7 @@ EXPORT_SYMBOL_GPL(dmi_kobj);
|
|
|
* 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 u32 dmi_ver __initdata;
|
|
|
static u32 dmi_len;
|
|
@@ -39,25 +39,21 @@ static int dmi_memdev_nr;
|
|
|
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)
|