RE: [PATCH v5] x86/mce: retrieve poison range from hardware

From: Luck, Tony
Date: Mon Aug 01 2022 - 11:58:43 EST


> struct mce m;
> + int lsb = PAGE_SHIFT;

Some maintainers like to order local declaration lines from longest to shortest

> + /*
> + * Even if the ->validation_bits are set for address mask,
> + * to be extra safe, check and reject an error radius '0',
> + * and fallback to the default page size.
> + */
> + if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK) {
> + lsb = __ffs64(mem_err->physical_addr_mask);
> + if (lsb == 1)
> + lsb = PAGE_SHIFT;
> + }


The comment above __ffs64() says:

* The result is not defined if no bits are set, so check that @word
* is non-zero before calling this.

So if the intent is "extra safe" should check for that:

if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK &&
mem_err->physical_addr_mask) {
lsb = __ffs64(mem_err->physical_addr_mask);
if (lsb == 1)
lsb = PAGE_SHIFT;
}

-Tony