From: Darrick J. Wong <djwong@xxxxxxxxxx> Zero the memory that we pass to the kernel via ioctls so that we never pass userspace heap/stack garbage around. This silences valgrind complaints about uninitialized padding areas. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- libhandle/handle.c | 10 ++++++---- scrub/inodes.c | 2 +- scrub/spacemap.c | 3 +-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libhandle/handle.c b/libhandle/handle.c index 5c1686b3..27abc6b2 100644 --- a/libhandle/handle.c +++ b/libhandle/handle.c @@ -235,8 +235,10 @@ obj_to_handle( { char hbuf [MAXHANSIZ]; int ret; - uint32_t handlen; - xfs_fsop_handlereq_t hreq; + uint32_t handlen = 0; + struct xfs_fsop_handlereq hreq = { }; + + memset(hbuf, 0, MAXHANSIZ); if (opcode == XFS_IOC_FD_TO_HANDLE) { hreq.fd = obj.fd; @@ -275,7 +277,7 @@ open_by_fshandle( { int fsfd; char *path; - xfs_fsop_handlereq_t hreq; + struct xfs_fsop_handlereq hreq = { }; if ((fsfd = handle_to_fsfd(fshanp, &path)) < 0) return -1; @@ -382,7 +384,7 @@ attr_list_by_handle( { int error, fd; char *path; - xfs_fsop_attrlist_handlereq_t alhreq; + struct xfs_fsop_attrlist_handlereq alhreq = { }; if ((fd = handle_to_fsfd(hanp, &path)) < 0) return -1; diff --git a/scrub/inodes.c b/scrub/inodes.c index bdc12df3..63865113 100644 --- a/scrub/inodes.c +++ b/scrub/inodes.c @@ -111,7 +111,7 @@ scan_ag_inodes( xfs_agnumber_t agno, void *arg) { - struct xfs_handle handle; + struct xfs_handle handle = { }; char descr[DESCR_BUFSZ]; struct xfs_inumbers_req *ireq; struct xfs_bulkstat_req *breq; diff --git a/scrub/spacemap.c b/scrub/spacemap.c index 9653916d..a5508d56 100644 --- a/scrub/spacemap.c +++ b/scrub/spacemap.c @@ -47,11 +47,10 @@ scrub_iterate_fsmap( int i; int error; - head = malloc(fsmap_sizeof(FSMAP_NR)); + head = calloc(1, fsmap_sizeof(FSMAP_NR)); if (!head) return errno; - memset(head, 0, sizeof(*head)); memcpy(head->fmh_keys, keys, sizeof(struct fsmap) * 2); head->fmh_count = FSMAP_NR;