From c13d919564cf6692a794fe1ceb1875971f8cde03 Mon Sep 17 00:00:00 2001 From: Jian Yu Date: Mon, 31 Jul 2023 10:24:02 -0700 Subject: [PATCH] LU-16980 build: fix gcc-12 [-Werror=use-after-free] error This patch fixes the following [-Werror=use-after-free] and [-Werror=stringop-overflow=] errors detected by gcc 12: libcfs/include/libcfs/util/list.h:481:42: error: pointer 'tmp' used after 'free' [-Werror=use-after-free] 481 | pos = list_entry(pos->member.next, typeof(*pos), member), \ | ^ libcfs/include/libcfs/util/list.h:239:28: note: in definition of macro 'list_entry' 239 | ((type *)((char *)(ptr)-(char *)(&((type *)0)->member))) | ^~~ obd.c:5118:9: note: in expansion of macro 'list_for_each_entry' 5118 | list_for_each_entry(tmp, head, lpn_list) { | ^~~~~~~~~~~~~~~~~~~ obd.c:5124:17: note: call to 'free' here 5124 | free(tmp); | ^~~~~~~~~ test_brw.c: In function 'main': test_brw.c:227:22: error: 'write' specified size between 9223372036854775808 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Werror=stringop-overflow=] 227 | rc = write(fd, buf, len); | ^~~~~~~~~~~~~~~~~~~ Change-Id: Ibe783ab0d13e2ecde1736946323932ab5db53740 Signed-off-by: Jian Yu Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/51819 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Timothy Day Reviewed-by: Oleg Drokin --- lustre/tests/test_brw.c | 2 +- lustre/utils/obd.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lustre/tests/test_brw.c b/lustre/tests/test_brw.c index a99c7a6..a15cbc1 100644 --- a/lustre/tests/test_brw.c +++ b/lustre/tests/test_brw.c @@ -113,7 +113,7 @@ int main(int argc, char **argv) int fd; char *buf; long long count, last; - long pg_vec, len; + size_t pg_vec, len; uint64_t objid, offset; struct stat st; int flags = 0; diff --git a/lustre/utils/obd.c b/lustre/utils/obd.c index b7c808a..64a43de 100644 --- a/lustre/utils/obd.c +++ b/lustre/utils/obd.c @@ -5121,7 +5121,6 @@ int llog_poollist(char *fsname, char *poolname) else printf("%s.%s\n", fsname, tmp->lpn_name); list_del(&tmp->lpn_list); - free(tmp); } return rc; -- 1.8.3.1