Merge tag 'uuid-for-4.14' of git://git.infradead.org/users/hch/uuid
[sfrench/cifs-2.6.git] / drivers / firmware / efi / cper.c
index 684e65c11dde759d2e04393d1c7fa7e9e2674bad..d2fcafcea07e54d4b5cde6fe8ce433e2b3a4bbf8 100644 (file)
@@ -606,7 +606,6 @@ void cper_estatus_print(const char *pfx,
                        const struct acpi_hest_generic_status *estatus)
 {
        struct acpi_hest_generic_data *gdata;
                        const struct acpi_hest_generic_status *estatus)
 {
        struct acpi_hest_generic_data *gdata;
-       unsigned int data_len;
        int sec_no = 0;
        char newpfx[64];
        __u16 severity;
        int sec_no = 0;
        char newpfx[64];
        __u16 severity;
@@ -617,14 +616,10 @@ void cper_estatus_print(const char *pfx,
                       "It has been corrected by h/w "
                       "and requires no further action");
        printk("%s""event severity: %s\n", pfx, cper_severity_str(severity));
                       "It has been corrected by h/w "
                       "and requires no further action");
        printk("%s""event severity: %s\n", pfx, cper_severity_str(severity));
-       data_len = estatus->data_length;
-       gdata = (struct acpi_hest_generic_data *)(estatus + 1);
        snprintf(newpfx, sizeof(newpfx), "%s%s", pfx, INDENT_SP);
 
        snprintf(newpfx, sizeof(newpfx), "%s%s", pfx, INDENT_SP);
 
-       while (data_len >= acpi_hest_get_size(gdata)) {
+       apei_estatus_for_each_section(estatus, gdata) {
                cper_estatus_print_section(newpfx, gdata, sec_no);
                cper_estatus_print_section(newpfx, gdata, sec_no);
-               data_len -= acpi_hest_get_record_size(gdata);
-               gdata = acpi_hest_get_next(gdata);
                sec_no++;
        }
 }
                sec_no++;
        }
 }
@@ -653,15 +648,12 @@ int cper_estatus_check(const struct acpi_hest_generic_status *estatus)
        if (rc)
                return rc;
        data_len = estatus->data_length;
        if (rc)
                return rc;
        data_len = estatus->data_length;
-       gdata = (struct acpi_hest_generic_data *)(estatus + 1);
 
 
-       while (data_len >= acpi_hest_get_size(gdata)) {
+       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))
                        return -EINVAL;
                gedata_len = acpi_hest_get_error_length(gdata);
                if (gedata_len > data_len - acpi_hest_get_size(gdata))
                        return -EINVAL;
-
                data_len -= acpi_hest_get_record_size(gdata);
                data_len -= acpi_hest_get_record_size(gdata);
-               gdata = acpi_hest_get_next(gdata);
        }
        if (data_len)
                return -EINVAL;
        }
        if (data_len)
                return -EINVAL;