diff options
Diffstat (limited to 'drivers/firmware/dmi_scan.c')
-rw-r--r-- | drivers/firmware/dmi_scan.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index c5f7b4e9eb6c..69fac068669f 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c | |||
@@ -78,7 +78,7 @@ static const char * __init dmi_string(const struct dmi_header *dm, u8 s) | |||
78 | * We have to be cautious here. We have seen BIOSes with DMI pointers | 78 | * We have to be cautious here. We have seen BIOSes with DMI pointers |
79 | * pointing to completely the wrong place for example | 79 | * pointing to completely the wrong place for example |
80 | */ | 80 | */ |
81 | static void dmi_table(u8 *buf, int len, int num, | 81 | static void dmi_table(u8 *buf, u32 len, int num, |
82 | void (*decode)(const struct dmi_header *, void *), | 82 | void (*decode)(const struct dmi_header *, void *), |
83 | void *private_data) | 83 | void *private_data) |
84 | { | 84 | { |
@@ -93,12 +93,6 @@ static void dmi_table(u8 *buf, int len, int num, | |||
93 | const struct dmi_header *dm = (const struct dmi_header *)data; | 93 | const struct dmi_header *dm = (const struct dmi_header *)data; |
94 | 94 | ||
95 | /* | 95 | /* |
96 | * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] | ||
97 | */ | ||
98 | if (dm->type == DMI_ENTRY_END_OF_TABLE) | ||
99 | break; | ||
100 | |||
101 | /* | ||
102 | * We want to know the total length (formatted area and | 96 | * We want to know the total length (formatted area and |
103 | * strings) before decoding to make sure we won't run off the | 97 | * strings) before decoding to make sure we won't run off the |
104 | * table in dmi_decode or dmi_string | 98 | * table in dmi_decode or dmi_string |
@@ -108,13 +102,20 @@ static void dmi_table(u8 *buf, int len, int num, | |||
108 | data++; | 102 | data++; |
109 | if (data - buf < len - 1) | 103 | if (data - buf < len - 1) |
110 | decode(dm, private_data); | 104 | decode(dm, private_data); |
105 | |||
106 | /* | ||
107 | * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] | ||
108 | */ | ||
109 | if (dm->type == DMI_ENTRY_END_OF_TABLE) | ||
110 | break; | ||
111 | |||
111 | data += 2; | 112 | data += 2; |
112 | i++; | 113 | i++; |
113 | } | 114 | } |
114 | } | 115 | } |
115 | 116 | ||
116 | static phys_addr_t dmi_base; | 117 | static phys_addr_t dmi_base; |
117 | static u16 dmi_len; | 118 | static u32 dmi_len; |
118 | static u16 dmi_num; | 119 | static u16 dmi_num; |
119 | 120 | ||
120 | static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, | 121 | static int __init dmi_walk_early(void (*decode)(const struct dmi_header *, |