aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-04-13 19:32:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-04-13 19:32:16 -0400
commit71893f116109c92e4cd230d990fad5bd7cb4f99d (patch)
tree4c9b5b407907f3a7aaa2370fbe98e18e4dfaed66 /drivers
parentf6811370b9266a3d8a21e27cb5f46751f97df2fb (diff)
parent712ff25450bd01366301eef81c33e865d901e7b7 (diff)
Merge branch 'dmi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
Pull dmi updates from Jean Delvare. * 'dmi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: firmware: dmi_scan: Use lowercase letters for UUID firmware: dmi_scan: Add DMI_OEM_STRING support to dmi_matches firmware: dmi_scan: Fix UUID length safety check
Diffstat (limited to 'drivers')
-rw-r--r--drivers/firmware/dmi_scan.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 6feeacbe4d97..54e66adef252 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -187,7 +187,7 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot,
187 char *s; 187 char *s;
188 int is_ff = 1, is_00 = 1, i; 188 int is_ff = 1, is_00 = 1, i;
189 189
190 if (dmi_ident[slot] || dm->length <= index + 16) 190 if (dmi_ident[slot] || dm->length < index + 16)
191 return; 191 return;
192 192
193 d = (u8 *) dm + index; 193 d = (u8 *) dm + index;
@@ -211,9 +211,9 @@ static void __init dmi_save_uuid(const struct dmi_header *dm, int slot,
211 * says that this is the defacto standard. 211 * says that this is the defacto standard.
212 */ 212 */
213 if (dmi_ver >= 0x020600) 213 if (dmi_ver >= 0x020600)
214 sprintf(s, "%pUL", d); 214 sprintf(s, "%pUl", d);
215 else 215 else
216 sprintf(s, "%pUB", d); 216 sprintf(s, "%pUb", d);
217 217
218 dmi_ident[slot] = s; 218 dmi_ident[slot] = s;
219} 219}
@@ -792,7 +792,15 @@ static bool dmi_matches(const struct dmi_system_id *dmi)
792 int s = dmi->matches[i].slot; 792 int s = dmi->matches[i].slot;
793 if (s == DMI_NONE) 793 if (s == DMI_NONE)
794 break; 794 break;
795 if (dmi_ident[s]) { 795 if (s == DMI_OEM_STRING) {
796 /* DMI_OEM_STRING must be exact match */
797 const struct dmi_device *valid;
798
799 valid = dmi_find_device(DMI_DEV_TYPE_OEM_STRING,
800 dmi->matches[i].substr, NULL);
801 if (valid)
802 continue;
803 } else if (dmi_ident[s]) {
796 if (dmi->matches[i].exact_match) { 804 if (dmi->matches[i].exact_match) {
797 if (!strcmp(dmi_ident[s], 805 if (!strcmp(dmi_ident[s],
798 dmi->matches[i].substr)) 806 dmi->matches[i].substr))