]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - drivers/acpi/apei/ghes.c
ras: acpi/apei: cper: add support for generic data v3 structure
[mirror_ubuntu-zesty-kernel.git] / drivers / acpi / apei / ghes.c
index 217bda301f4a01946ab50753aabe75b61999c355..149b9d72a56c1cfbecc61d448c5c8559989df25d 100644 (file)
@@ -427,8 +427,7 @@ static void ghes_handle_memory_failure(struct acpi_hest_generic_data *gdata, int
        unsigned long pfn;
        int flags = -1;
        int sec_sev = ghes_severity(gdata->error_severity);
-       struct cper_sec_mem_err *mem_err;
-       mem_err = (struct cper_sec_mem_err *)(gdata + 1);
+       struct cper_sec_mem_err *mem_err = acpi_hest_get_payload(gdata);
 
        if (!(mem_err->validation_bits & CPER_MEM_VALID_PA))
                return;
@@ -464,8 +463,8 @@ static void ghes_do_proc(struct ghes *ghes,
                sec_sev = ghes_severity(gdata->error_severity);
                if (!uuid_le_cmp(*(uuid_le *)gdata->section_type,
                                 CPER_SEC_PLATFORM_MEM)) {
-                       struct cper_sec_mem_err *mem_err;
-                       mem_err = (struct cper_sec_mem_err *)(gdata+1);
+                       struct cper_sec_mem_err *mem_err = acpi_hest_get_payload(gdata);
+
                        ghes_edac_report_mem_error(ghes, sev, mem_err);
 
                        arch_apei_report_mem_error(sev, mem_err);
@@ -474,8 +473,8 @@ static void ghes_do_proc(struct ghes *ghes,
 #ifdef CONFIG_ACPI_APEI_PCIEAER
                else if (!uuid_le_cmp(*(uuid_le *)gdata->section_type,
                                      CPER_SEC_PCIE)) {
-                       struct cper_sec_pcie *pcie_err;
-                       pcie_err = (struct cper_sec_pcie *)(gdata+1);
+                       struct cper_sec_pcie *pcie_err = acpi_hest_get_payload(gdata);
+
                        if (sev == GHES_SEV_RECOVERABLE &&
                            sec_sev == GHES_SEV_RECOVERABLE &&
                            pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID &&