Whamcloud - gitweb
LU-15420 uapi: avoid gcc-11 -Werror=stringop-overread 19/46319/4
authorJames Simmons <jsimmons@infradead.org>
Sat, 5 Feb 2022 16:34:22 +0000 (09:34 -0700)
committerOleg Drokin <green@whamcloud.com>
Sat, 11 Jun 2022 05:33:37 +0000 (05:33 +0000)
commit6331eadbd60a8c58c1c456548d067aaf772dfbaf
tree738cad13f09d14e0252f72002555bcecf67436e8
parent47dc43dcb6b76c1e1d2951ce3229d4822cafda68
LU-15420 uapi: avoid gcc-11 -Werror=stringop-overread

GCC 11 warns about string and memory operations on fixed address:

In function ‘strlen’,
    inlined from ‘changelog_rec_sname’ at include/uapi/linux/lustre/lustre_user.h:1981:19,
    inlined from ‘mdd_changelog_rec_ext_rename’ at lustre/mdd/mdd_dir.c:932:2,
    inlined from ‘mdd_changelog_ns_store’ at lustre/mdd/mdd_dir.c:1061:3:
include/linux/fortify-string.h:25:33: error: ‘__builtin_strlen’
reading 1 or more bytes from a region of size 0 [-Werror=stringop-overread]
   25 | #define __underlying_strlen     __builtin_strlen

The reason is that we are looking for an address right after the end
of the chanelog record header which gcc thinks is an overrun. Rework
the code to allow us to index the memory right after the changelog
record header.

Also fix a long hidden bug in the lustre snmp code.

Change-Id: I13479b9074a392330d39f01656b26f9e9a91a8ec
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/46319
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/include/uapi/linux/lustre/lustre_user.h
lustre/tests/mpi/Makefile.am
snmp/lustre-snmp.c