On 2026-01-14 13:27, Nicola Vetrini wrote:
There is no reason to use pointer difference.
A violation of MISRA C Rule 18.2 ("Subtraction between pointers
shall only be applied to pointers that address elements of the
same array") is also resolved because the object to the subtraction
is applied is not an array.

Signed-off-by: Nicola Vetrini <[email protected]>
---
Found while randomly browsing violations of the rule on the allcode-x86_64 scan.
---
  xen/arch/x86/cpu/mcheck/mce-apei.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/cpu/mcheck/mce-apei.c 
b/xen/arch/x86/cpu/mcheck/mce-apei.c
index b89502088243..21aabe2027d0 100644
--- a/xen/arch/x86/cpu/mcheck/mce-apei.c
+++ b/xen/arch/x86/cpu/mcheck/mce-apei.c
@@ -74,7 +74,8 @@ int apei_write_mce(struct mce *m)
        rcd.hdr.record_id = cper_next_record_id();
        rcd.hdr.flags = CPER_HW_ERROR_FLAGS_PREVERR;
- rcd.sec_hdr.section_offset = (void *)&rcd.mce - (void *)&rcd;
+       rcd.sec_hdr.section_offset = offsetof(struct cper_mce_record, mce) -
+                                    offsetof(struct cper_mce_record, hdr);

"= offsetof(struct cper_mce_record, mce);" should be sufficient since the offset of hdr is 0?

Regards,
Jason

        rcd.sec_hdr.section_length = sizeof(rcd.mce);
        rcd.sec_hdr.revision = CPER_SEC_REV;
        /* fru_id and fru_text is invalid */


Reply via email to