Re: [PATCH] Bug fix: Clear ack of GHES table which contain wrong Error status block, let new error can fill GHES table.

From: Tyler Baicar
Date: Mon Oct 30 2017 - 09:53:47 EST


On 10/29/2017 9:23 PM, Qiang Zheng wrote:
Current Error status block processing flow, if wrong format is checked,
GHES table ack is not cleared.
It will cause new error can not be filled GHES table, because UEFI
need check ack to know if error was handled by OS.

This patch solved issue, no matter Error status block format is wrong,
But GHES table format is corrected, we clear ack.

Signed-off-by: Qiang Zheng <zhengqiang10@xxxxxxxxxx>
---
drivers/acpi/apei/ghes.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 077f9ba..b0e0782 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -743,6 +743,7 @@ static int ghes_proc(struct ghes *ghes)
}
ghes_do_proc(ghes, ghes->estatus);
+out:
The out goto is already at this location. Please sync to the tip:

ÂÂÂÂÂÂÂ 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))
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ return ghes_ack_error(ghes->generic_v2);

ÂÂÂÂÂÂÂ return rc;


/*
* GHESv2 type HEST entries introduce support for error acknowledgment,
* so only acknowledge the error if this support is present.
@@ -752,7 +753,7 @@ static int ghes_proc(struct ghes *ghes)
if (rc)
return rc;
}
-out:
+
ghes_clear_estatus(ghes);
return rc;
}

--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.