summaryrefslogtreecommitdiffstats
path: root/drivers/firmware/efi/cper.c
diff options
context:
space:
mode:
authorJoel Stanley <joel@jms.id.au>2019-04-08 12:35:00 +0930
committerJoel Stanley <joel@jms.id.au>2019-04-08 12:35:05 +0930
commit0b37f9a0bd24d9622f75d981feac67e72351b6e8 (patch)
treed40154b713e136a2d9dfb3fcb1903dd730bd234f /drivers/firmware/efi/cper.c
parentdf66fbc97853fbba90a0bfa44de32f3d5f7602b4 (diff)
parent8b298d3a0bd5feeb47129c4889356b38b78ab231 (diff)
downloadtalos-obmc-linux-0b37f9a0bd24d9622f75d981feac67e72351b6e8.tar.gz
talos-obmc-linux-0b37f9a0bd24d9622f75d981feac67e72351b6e8.zip
Merge tag 'v5.0.7' into dev-5.0
This is the 5.0.7 stable release Signed-off-by: Joel Stanley <joel@jms.id.au>
Diffstat (limited to 'drivers/firmware/efi/cper.c')
-rw-r--r--drivers/firmware/efi/cper.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
index a7902fccdcfa..6090d25dce85 100644
--- a/drivers/firmware/efi/cper.c
+++ b/drivers/firmware/efi/cper.c
@@ -546,19 +546,24 @@ EXPORT_SYMBOL_GPL(cper_estatus_check_header);
int cper_estatus_check(const struct acpi_hest_generic_status *estatus)
{
struct acpi_hest_generic_data *gdata;
- unsigned int data_len, gedata_len;
+ unsigned int data_len, record_size;
int rc;
rc = cper_estatus_check_header(estatus);
if (rc)
return rc;
+
data_len = estatus->data_length;
apei_estatus_for_each_section(estatus, gdata) {
- gedata_len = acpi_hest_get_error_length(gdata);
- if (gedata_len > data_len - acpi_hest_get_size(gdata))
+ if (sizeof(struct acpi_hest_generic_data) > data_len)
+ return -EINVAL;
+
+ record_size = acpi_hest_get_record_size(gdata);
+ if (record_size > data_len)
return -EINVAL;
- data_len -= acpi_hest_get_record_size(gdata);
+
+ data_len -= record_size;
}
if (data_len)
return -EINVAL;
OpenPOWER on IntegriCloud