• Heiko Carstens's avatar
    s390/crashdump: fix TOD programmable field size · f44e07a8
    Heiko Carstens authored
    The size of the TOD programmable field was incorrectly increased from
    four to eight bytes with commit 1a2c5840 ("s390/dump: cleanup CPU
    save area handling").
    This leads to an elf notes section NT_S390_TODPREG which has a size of
    eight instead of four bytes in case of kdump, however even worse is
    that the contents is incorrect: it is supposed to contain only the
    contents of the TOD programmable field, but in fact contains a mix of
    the TOD programmable field (32 bit upper bits) and parts of the CPU
    timer register (lower 32 bits).
    
    Fix this by simply changing the size of the todpreg field within the
    save area structure. This will implicitly also fix the size of the
    corresponding elf notes sections.
    
    This also gets rid of this compile time warning:
    
    in function ‘fortify_memcpy_chk’,
        inlined from ‘save_area_add_regs’ at arch/s390/kernel/crash_dump.c:99:2:
    ./include/linux/fortify-string.h:413:25: error: call to ‘__read_overflow2_field’
       declared with attribute warning: detected read beyond size of field
       (2nd parameter); maybe use struct_group()? [-Werror=attribute-warning]
      413 |                         __read_overflow2_field(q_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Fixes: 1a2c5840 ("s390/dump: cleanup CPU save area handling")
    Reviewed-by: default avatarChristian Borntraeger <borntraeger@linux.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
    f44e07a8
crash_dump.c 15.9 KB