platform/x86: dell-wmi-sysman: fix a NULL pointer dereference
An upcoming Dell platform is causing a NULL pointer dereference in dell-wmi-sysman initialization. Validate that the input from BIOS matches correct ACPI types and abort module initialization if it fails. Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Tested-by: Perry Yuan <perry_yuan@dell.com> Link: https://lore.kernel.org/r/20210129172654.2326751-1-mario.limonciello@dell.com [hdegoede@redhat.com: Drop redundant release_attributes_data() call] Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
d7cbe2773a
commit
64b0efa18f
|
@ -419,13 +419,17 @@ static int init_bios_attributes(int attr_type, const char *guid)
|
|||
return retval;
|
||||
/* need to use specific instance_id and guid combination to get right data */
|
||||
obj = get_wmiobj_pointer(instance_id, guid);
|
||||
if (!obj)
|
||||
if (!obj || obj->type != ACPI_TYPE_PACKAGE)
|
||||
return -ENODEV;
|
||||
elements = obj->package.elements;
|
||||
|
||||
mutex_lock(&wmi_priv.mutex);
|
||||
while (elements) {
|
||||
/* sanity checking */
|
||||
if (elements[ATTR_NAME].type != ACPI_TYPE_STRING) {
|
||||
pr_debug("incorrect element type\n");
|
||||
goto nextobj;
|
||||
}
|
||||
if (strlen(elements[ATTR_NAME].string.pointer) == 0) {
|
||||
pr_debug("empty attribute found\n");
|
||||
goto nextobj;
|
||||
|
|
Loading…
Reference in New Issue