git: 9084eb8678d3 - stable/13 - openzfs: Fix GCC 14 warnings

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Sat, 30 Nov 2024 20:12:46 UTC
The branch stable/13 has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=9084eb8678d3c76f10dd4c7db86897e3f04a222b

commit 9084eb8678d3c76f10dd4c7db86897e3f04a222b
Author:     Tony Hutter <hutter2@llnl.gov>
AuthorDate: 2024-04-29 18:31:50 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2024-11-30 19:18:32 +0000

    openzfs: Fix GCC 14 warnings
    
    This is a direct cherry-pick to stable/13 of OpenZFS commit
    4840f023afae7c4932c903cf3a436c02c6704e20:
    
        GCC: Fixes for gcc 14 on Fedora 40
    
        - Workaround dangling pointer in uu_list.c (#16124)
        - Fix calloc() transposed arguments in zpool_vdev_os.c
        - Make some temp variables unsigned to prevent triggering a
          '-Werror=alloc-size-larger-than' error.
    
        Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
        Signed-off-by: Tony Hutter <hutter2@llnl.gov>
        Closes #16124
        Closes #16125
---
 sys/contrib/openzfs/cmd/zpool/os/linux/zpool_vdev_os.c |  2 +-
 sys/contrib/openzfs/lib/libuutil/uu_list.c             | 14 ++++++++++----
 sys/contrib/openzfs/module/zfs/vdev_raidz.c            |  5 +++--
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/sys/contrib/openzfs/cmd/zpool/os/linux/zpool_vdev_os.c b/sys/contrib/openzfs/cmd/zpool/os/linux/zpool_vdev_os.c
index cfaeef56a20e..42ccd39919bf 100644
--- a/sys/contrib/openzfs/cmd/zpool/os/linux/zpool_vdev_os.c
+++ b/sys/contrib/openzfs/cmd/zpool/os/linux/zpool_vdev_os.c
@@ -432,7 +432,7 @@ static char *zpool_sysfs_gets(char *path)
 		return (NULL);
 	}
 
-	buf = calloc(sizeof (*buf), statbuf.st_size + 1);
+	buf = calloc(statbuf.st_size + 1, sizeof (*buf));
 	if (buf == NULL) {
 		close(fd);
 		return (NULL);
diff --git a/sys/contrib/openzfs/lib/libuutil/uu_list.c b/sys/contrib/openzfs/lib/libuutil/uu_list.c
index c3a447d01de3..0ad5fff6fd4b 100644
--- a/sys/contrib/openzfs/lib/libuutil/uu_list.c
+++ b/sys/contrib/openzfs/lib/libuutil/uu_list.c
@@ -507,14 +507,20 @@ uu_list_walk(uu_list_t *lp, uu_walk_fn_t *func, void *private, uint32_t flags)
 	}
 
 	if (lp->ul_debug || robust) {
-		uu_list_walk_t my_walk;
+		uu_list_walk_t *my_walk;
 		void *e;
 
-		list_walk_init(&my_walk, lp, flags);
+		my_walk = uu_zalloc(sizeof (*my_walk));
+		if (my_walk == NULL)
+			return (-1);
+
+		list_walk_init(my_walk, lp, flags);
 		while (status == UU_WALK_NEXT &&
-		    (e = uu_list_walk_next(&my_walk)) != NULL)
+		    (e = uu_list_walk_next(my_walk)) != NULL)
 			status = (*func)(e, private);
-		list_walk_fini(&my_walk);
+		list_walk_fini(my_walk);
+
+		uu_free(my_walk);
 	} else {
 		if (!reverse) {
 			for (np = lp->ul_null_node.uln_next;
diff --git a/sys/contrib/openzfs/module/zfs/vdev_raidz.c b/sys/contrib/openzfs/module/zfs/vdev_raidz.c
index 5c25007f17b9..ecdaea0bcc51 100644
--- a/sys/contrib/openzfs/module/zfs/vdev_raidz.c
+++ b/sys/contrib/openzfs/module/zfs/vdev_raidz.c
@@ -1182,8 +1182,9 @@ vdev_raidz_matrix_reconstruct(raidz_row_t *rr, int n, int nmissing,
 static void
 vdev_raidz_reconstruct_general(raidz_row_t *rr, int *tgts, int ntgts)
 {
-	int n, i, c, t, tt;
-	int nmissing_rows;
+	int i, c, t, tt;
+	unsigned int n;
+	unsigned int nmissing_rows;
 	int missing_rows[VDEV_RAIDZ_MAXPARITY];
 	int parity_map[VDEV_RAIDZ_MAXPARITY];
 	uint8_t *p, *pp;