]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_io: fix gcc complaints about potentially uninitialized variables
authorDarrick J. Wong <djwong@kernel.org>
Sun, 2 Jun 2024 23:33:17 +0000 (16:33 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Mon, 3 Jun 2024 18:37:43 +0000 (11:37 -0700)
When I turned on UBSAN on the userspace build with gcc 12.2, I get this:

bulkstat.c: In function ‘bulkstat_single_f’:
bulkstat.c:316:24: error: ‘ino’ may be used uninitialized [-Werror=maybe-uninitialized]
  316 |                 ret = -xfrog_bulkstat_single(&xfd, ino, flags, &bulkstat);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bulkstat.c:293:41: note: ‘ino’ was declared here
  293 |                 uint64_t                ino;
      |                                         ^~~

I /think/ this is a failure of the gcc static checker to notice that sm
will always be set to the last element of the tags[] array if it didn't
set ino, but this code could be more explicit about deciding to
fallback to strtoul.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
io/bulkstat.c

index a9ad87ca183fed645c2eb059ac7ca7b520b99c07..06023e1289e4206f00d7e6b9ef1d60e4f3fe5a1b 100644 (file)
@@ -290,7 +290,7 @@ bulkstat_single_f(
 
        for (i = optind; i < argc; i++) {
                struct single_map       *sm = tags;
-               uint64_t                ino;
+               uint64_t                ino = NULLFSINO;
                unsigned int            flags = 0;
 
                /* Try to look up our tag... */
@@ -303,7 +303,7 @@ bulkstat_single_f(
                }
 
                /* ...or else it's an inode number. */
-               if (sm->tag == NULL) {
+               if (ino == NULLFSINO) {
                        errno = 0;
                        ino = strtoull(argv[i], NULL, 10);
                        if (errno) {