[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 571bb32..cc9c91b 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 1a34b7d..7ecc8c0 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 6504afc..ec8e747 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 f0c603a..950df31 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 e5c2344..6912143 100644 (file)
@@ -551,6 +551,13 @@ xfs_inobt_insrec(
        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.
         */