Message ID | 20170531194152.65927-5-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> @@ -165,11 +165,11 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, > err_seq++; > gdata = (struct acpi_hest_generic_data *)(tmp + 1); > if (gdata->validation_bits & CPER_SEC_VALID_FRU_ID) > - fru_id = (uuid_le *)gdata->fru_id; > + fru_id = (guid_t *)gdata->fru_id; > if (gdata->validation_bits & CPER_SEC_VALID_FRU_TEXT) > fru_text = gdata->fru_text; > - sec_type = (uuid_le *)gdata->section_type; > - if (!uuid_le_cmp(*sec_type, CPER_SEC_PLATFORM_MEM)) { > + sec_type = (guid_t *)gdata->section_type; From a quick look over the tree it seems like both fru_id and section_type should be declared as guid_t in struct acpi_hest_generic_data. > + if (!guid_equal(sec_type, &CPER_SEC_PLATFORM_MEM)) { The "!" seems incorrect here.
On Mon, 2017-06-05 at 18:06 +0200, Christoph Hellwig wrote: > > @@ -165,11 +165,11 @@ static int extlog_print(struct notifier_block > > *nb, unsigned long val, > > err_seq++; > > gdata = (struct acpi_hest_generic_data *)(tmp + 1); > > if (gdata->validation_bits & CPER_SEC_VALID_FRU_ID) > > - fru_id = (uuid_le *)gdata->fru_id; > > + fru_id = (guid_t *)gdata->fru_id; > > if (gdata->validation_bits & CPER_SEC_VALID_FRU_TEXT) > > fru_text = gdata->fru_text; > > - sec_type = (uuid_le *)gdata->section_type; > > - if (!uuid_le_cmp(*sec_type, CPER_SEC_PLATFORM_MEM)) { > > + sec_type = (guid_t *)gdata->section_type; > > From a quick look over the tree it seems like both fru_id and > section_type should be declared as guid_t in > struct acpi_hest_generic_data. They are arrays of 16 u8:s. And since it's defined in ACPI table definition I'm not sure we can change it. > > > + if (!guid_equal(sec_type, &CPER_SEC_PLATFORM_MEM)) { > > The "!" seems incorrect here. Right.
On Mon, Jun 05, 2017 at 07:23:05PM +0300, Andy Shevchenko wrote: > > From a quick look over the tree it seems like both fru_id and > > section_type should be declared as guid_t in > > struct acpi_hest_generic_data. > > > They are arrays of 16 u8:s. As is the guid_t. > And since it's defined in ACPI table definition I'm not sure we can > change it. If we always use 16 u8s as guid_t we might as well define the structure as such, instead of all the casts that remove type safety.
diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c index 502ea4dc2080..6b101d595ccc 100644 --- a/drivers/acpi/acpi_extlog.c +++ b/drivers/acpi/acpi_extlog.c @@ -141,9 +141,9 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, int cpu = mce->extcpu; struct acpi_hest_generic_status *estatus, *tmp; struct acpi_hest_generic_data *gdata; - const uuid_le *fru_id = &NULL_UUID_LE; + const guid_t *fru_id = &guid_null; char *fru_text = ""; - uuid_le *sec_type; + guid_t *sec_type; static u32 err_seq; estatus = extlog_elog_entry_check(cpu, bank); @@ -165,11 +165,11 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, err_seq++; gdata = (struct acpi_hest_generic_data *)(tmp + 1); if (gdata->validation_bits & CPER_SEC_VALID_FRU_ID) - fru_id = (uuid_le *)gdata->fru_id; + fru_id = (guid_t *)gdata->fru_id; if (gdata->validation_bits & CPER_SEC_VALID_FRU_TEXT) fru_text = gdata->fru_text; - sec_type = (uuid_le *)gdata->section_type; - if (!uuid_le_cmp(*sec_type, CPER_SEC_PLATFORM_MEM)) { + sec_type = (guid_t *)gdata->section_type; + if (!guid_equal(sec_type, &CPER_SEC_PLATFORM_MEM)) { struct cper_sec_mem_err *mem = (void *)(gdata + 1); if (gdata->error_data_length >= sizeof(*mem)) trace_extlog_mem_event(mem, err_seq, fru_id, fru_text, @@ -182,17 +182,17 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, static bool __init extlog_get_l1addr(void) { - u8 uuid[16]; + guid_t guid; acpi_handle handle; union acpi_object *obj; - acpi_str_to_uuid(extlog_dsm_uuid, uuid); - + if (guid_parse(extlog_dsm_uuid, &guid)) + return false; if (ACPI_FAILURE(acpi_get_handle(NULL, "\\_SB", &handle))) return false; - if (!acpi_check_dsm(handle, uuid, EXTLOG_DSM_REV, 1 << EXTLOG_FN_ADDR)) + if (!acpi_check_dsm(handle, guid.b, EXTLOG_DSM_REV, 1 << EXTLOG_FN_ADDR)) return false; - obj = acpi_evaluate_dsm_typed(handle, uuid, EXTLOG_DSM_REV, + obj = acpi_evaluate_dsm_typed(handle, guid.b, EXTLOG_DSM_REV, EXTLOG_FN_ADDR, NULL, ACPI_TYPE_INTEGER); if (!obj) { return false;
There are new types and helpers that are supposed to be used in new code. As a preparation to get rid of legacy types and API functions do the conversion here. Cc: Borislav Petkov <bp@suse.de> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/acpi/acpi_extlog.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)