[XFS] silence gcc4 warnings. the directory ones are wrong because of
authorChristoph Hellwig <hch@sgi.com>
Wed, 2 Nov 2005 04:06:18 +0000 (15:06 +1100)
committerNathan Scott <nathans@sgi.com>
Wed, 2 Nov 2005 04:06:18 +0000 (15:06 +1100)
information gcc could not find out (that a directory always has a ..
entry), the others are outright gcc bugs.

SGI-PV: 943511
SGI-Modid: xfs-linux:xfs-kern:200055a

Signed-off-by: Christoph Hellwig <hch@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/xfs_acl.c
fs/xfs/xfs_alloc_btree.c
fs/xfs/xfs_dir2_sf.c
fs/xfs/xfs_dir_leaf.c
fs/xfs/xfs_ialloc_btree.c

index 571bb3205d50c359e6b2c5c2a908ad6d598de218..cc9c91b9e77197ffdec8c497200c3ea4f64dc586 100644 (file)
@@ -436,6 +436,7 @@ xfs_acl_access(
        int             seen_userobj = 0;
 
        matched.ae_tag = 0;     /* Invalid type */
+       matched.ae_perm = 0;
        md >>= 6;       /* Normalize the bits for comparison */
 
        for (i = 0; i < fap->acl_cnt; i++) {
index 1a34b7d99bcdbade07bc6258fa250752e342dbad..7ecc8c0611d12bebecf35fe30ec06fda7e727930 100644 (file)
@@ -614,6 +614,14 @@ xfs_alloc_insrec(
        xfs_alloc_rec_t         *rp;    /* pointer to btree records */
 
        ASSERT(INT_GET(recp->ar_blockcount, ARCH_CONVERT) > 0);
+
+       /*
+        * GCC doesn't understand the (arguably complex) control flow in
+        * this function and complains about uninitialized structure fields
+        * without this.
+        */
+       memset(&nrec, 0, sizeof(nrec));
+
        /*
         * If we made it to the root level, allocate a new root block
         * and we're done.
index 6504afc54a55a171e0b3df2d5b476d2ac116b9c2..ec8e7476c8b75198a1b301a6eba182a9644f54f0 100644 (file)
@@ -86,7 +86,7 @@ xfs_dir2_block_sfsize(
        int                     isdotdot;       /* entry is ".." */
        xfs_mount_t             *mp;            /* mount structure pointer */
        int                     namelen;        /* total name bytes */
-       xfs_ino_t               parent;         /* parent inode number */
+       xfs_ino_t               parent = 0;     /* parent inode number */
        int                     size=0;         /* total computed size */
 
        mp = dp->i_mount;
@@ -277,11 +277,11 @@ xfs_dir2_sf_addname(
        int                     incr_isize;     /* total change in size */
        int                     new_isize;      /* di_size after adding name */
        int                     objchange;      /* changing to 8-byte inodes */
-       xfs_dir2_data_aoff_t    offset;         /* offset for new entry */
+       xfs_dir2_data_aoff_t    offset = 0;     /* offset for new entry */
        int                     old_isize;      /* di_size before adding name */
        int                     pick;           /* which algorithm to use */
        xfs_dir2_sf_t           *sfp;           /* shortform structure */
-       xfs_dir2_sf_entry_t     *sfep;          /* shortform entry */
+       xfs_dir2_sf_entry_t     *sfep = NULL;   /* shortform entry */
 
        xfs_dir2_trace_args("sf_addname", args);
        ASSERT(xfs_dir2_sf_lookup(args) == ENOENT);
index f0c603a78fc1e468051bf8fafff58fa515e2a7ea..950df31efc465c6f8d06ab72654899dca3f15268 100644 (file)
@@ -628,7 +628,7 @@ xfs_dir_leaf_to_shortform(xfs_da_args_t *iargs)
        xfs_dir_leaf_name_t *namest;
        xfs_da_args_t args;
        xfs_inode_t *dp;
-       xfs_ino_t parent;
+       xfs_ino_t parent = 0;
        char *tmpbuffer;
        int retval, i;
        xfs_dabuf_t *bp;
index e5c23445d38bb5262b72331e235a91cd6e30334b..6912143f6ffe35138d17cc8880e3d62ac6c4f19f 100644 (file)
@@ -550,6 +550,13 @@ xfs_inobt_insrec(
        int                     ptr;    /* index in btree block for this rec */
        xfs_inobt_rec_t         *rp=NULL;       /* pointer to btree records */
 
+       /*
+        * GCC doesn't understand the (arguably complex) control flow in
+        * this function and complains about uninitialized structure fields
+        * without this.
+        */
+       memset(&nrec, 0, sizeof(nrec));
+
        /*
         * If we made it to the root level, allocate a new root block
         * and we're done.