ACPI, APEI, Fix APEI related table size checking
On Huang Ying's machine: erst_tab->header_length == sizeof(struct acpi_table_einj) but Yinghai reported that on his machine, erst_tab->header_length == sizeof(struct acpi_table_einj) - sizeof(struct acpi_table_header) To make erst table size checking code works on all systems, both testing are treated as PASS. Same situation applies to einj_tab->header_length, so corresponding table size checking is changed in similar way too. v2: - Treat both table size as valid Originally-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
899611ee7d
commit
3a78f96532
|
@ -426,7 +426,9 @@ DEFINE_SIMPLE_ATTRIBUTE(error_inject_fops, NULL,
|
|||
|
||||
static int einj_check_table(struct acpi_table_einj *einj_tab)
|
||||
{
|
||||
if (einj_tab->header_length != sizeof(struct acpi_table_einj))
|
||||
if ((einj_tab->header_length !=
|
||||
(sizeof(struct acpi_table_einj) - sizeof(einj_tab->header)))
|
||||
&& (einj_tab->header_length != sizeof(struct acpi_table_einj)))
|
||||
return -EINVAL;
|
||||
if (einj_tab->header.length < sizeof(struct acpi_table_einj))
|
||||
return -EINVAL;
|
||||
|
|
|
@ -750,7 +750,9 @@ __setup("erst_disable", setup_erst_disable);
|
|||
|
||||
static int erst_check_table(struct acpi_table_erst *erst_tab)
|
||||
{
|
||||
if (erst_tab->header_length != sizeof(struct acpi_table_erst))
|
||||
if ((erst_tab->header_length !=
|
||||
(sizeof(struct acpi_table_erst) - sizeof(erst_tab->header)))
|
||||
&& (erst_tab->header_length != sizeof(struct acpi_table_einj)))
|
||||
return -EINVAL;
|
||||
if (erst_tab->header.length < sizeof(struct acpi_table_erst))
|
||||
return -EINVAL;
|
||||
|
|
Loading…
Reference in New Issue