Message ID | 20180116231448.7544-3-manoj.iyer@canonical.com |
---|---|
State | New |
Headers | show |
Series | [1/2] ACPI: APEI: fix the wrong iteration of generic error status block | expand |
Acked-by: Paolo Pisati <paolo.pisati@canonical.com> On Wed, Jan 17, 2018 at 12:14 AM, Manoj Iyer <manoj.iyer@canonical.com> wrote: > From: Tyler Baicar <tbaicar@codeaurora.org> > > Currently we acknowledge errors before clearing the error status. > This could cause a new error to be populated by firmware in-between > the error acknowledgment and the error status clearing which would > cause the second error's status to be cleared without being handled. > So, clear the error status before acknowledging the errors. > > Also, make sure to acknowledge the error if the error status read > fails. > > BugLink: https://launchpad.net/bugs/1732990 > > Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org> > Reviewed-by: Borislav Petkov <bp@suse.de> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > (cherry picked from commit aaf2c2fb0f51f91c699039440862b6ae9c25c10e) > Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com> > --- > drivers/acpi/apei/ghes.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index f9f106e62e74..3784897c2f66 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -728,17 +728,19 @@ static int ghes_proc(struct ghes *ghes) > } > ghes_do_proc(ghes, ghes->estatus); > > +out: > + ghes_clear_estatus(ghes); > + > + if (rc == -ENOENT) > + return rc; > + > /* > * GHESv2 type HEST entries introduce support for error acknowledgment, > * so only acknowledge the error if this support is present. > */ > - if (is_hest_type_generic_v2(ghes)) { > - rc = ghes_ack_error(ghes->generic_v2); > - if (rc) > - return rc; > - } > -out: > - ghes_clear_estatus(ghes); > + if (is_hest_type_generic_v2(ghes)) > + return ghes_ack_error(ghes->generic_v2); > + > return rc; > } > > -- > 2.14.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index f9f106e62e74..3784897c2f66 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@ -728,17 +728,19 @@ static int ghes_proc(struct ghes *ghes) } ghes_do_proc(ghes, ghes->estatus); +out: + ghes_clear_estatus(ghes); + + if (rc == -ENOENT) + return rc; + /* * GHESv2 type HEST entries introduce support for error acknowledgment, * so only acknowledge the error if this support is present. */ - if (is_hest_type_generic_v2(ghes)) { - rc = ghes_ack_error(ghes->generic_v2); - if (rc) - return rc; - } -out: - ghes_clear_estatus(ghes); + if (is_hest_type_generic_v2(ghes)) + return ghes_ack_error(ghes->generic_v2); + return rc; }