ASoC: Intel: Skylake: Check for NHLT ACPI header signature
In certain buggy BIOS acpi_evaluate_dsm() may not return the correct NHLT table, so check the NHLT table header signature before accessing it. Signed-off-by: Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com> Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com> Acked-By: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f8e0665211
commit
3b47c9dc75
|
@ -20,6 +20,8 @@
|
|||
#include <linux/pci.h>
|
||||
#include "skl.h"
|
||||
|
||||
#define NHLT_ACPI_HEADER_SIG "NHLT"
|
||||
|
||||
/* Unique identification for getting NHLT blobs */
|
||||
static guid_t osc_guid =
|
||||
GUID_INIT(0xA69F886E, 0x6CEB, 0x4594,
|
||||
|
@ -45,6 +47,13 @@ struct nhlt_acpi_table *skl_nhlt_init(struct device *dev)
|
|||
memremap(nhlt_ptr->min_addr, nhlt_ptr->length,
|
||||
MEMREMAP_WB);
|
||||
ACPI_FREE(obj);
|
||||
if (nhlt_table && (strncmp(nhlt_table->header.signature,
|
||||
NHLT_ACPI_HEADER_SIG,
|
||||
strlen(NHLT_ACPI_HEADER_SIG)) != 0)) {
|
||||
memunmap(nhlt_table);
|
||||
dev_err(dev, "NHLT ACPI header signature incorrect\n");
|
||||
return NULL;
|
||||
}
|
||||
return nhlt_table;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue