Prechádzať zdrojové kódy

[XFS] silence gcc4 warnings. the directory ones are wrong because of
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>

Christoph Hellwig 19 rokov pred
rodič
commit
5bde1ba99c

+ 1 - 0
fs/xfs/xfs_acl.c

@@ -436,6 +436,7 @@ xfs_acl_access(
 	int		seen_userobj = 0;
 	int		seen_userobj = 0;
 
 
 	matched.ae_tag = 0;	/* Invalid type */
 	matched.ae_tag = 0;	/* Invalid type */
+	matched.ae_perm = 0;
 	md >>= 6;	/* Normalize the bits for comparison */
 	md >>= 6;	/* Normalize the bits for comparison */
 
 
 	for (i = 0; i < fap->acl_cnt; i++) {
 	for (i = 0; i < fap->acl_cnt; i++) {

+ 8 - 0
fs/xfs/xfs_alloc_btree.c

@@ -614,6 +614,14 @@ xfs_alloc_insrec(
 	xfs_alloc_rec_t		*rp;	/* pointer to btree records */
 	xfs_alloc_rec_t		*rp;	/* pointer to btree records */
 
 
 	ASSERT(INT_GET(recp->ar_blockcount, ARCH_CONVERT) > 0);
 	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
 	 * If we made it to the root level, allocate a new root block
 	 * and we're done.
 	 * and we're done.

+ 3 - 3
fs/xfs/xfs_dir2_sf.c

@@ -86,7 +86,7 @@ xfs_dir2_block_sfsize(
 	int			isdotdot;	/* entry is ".." */
 	int			isdotdot;	/* entry is ".." */
 	xfs_mount_t		*mp;		/* mount structure pointer */
 	xfs_mount_t		*mp;		/* mount structure pointer */
 	int			namelen;	/* total name bytes */
 	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 */
 	int			size=0;		/* total computed size */
 
 
 	mp = dp->i_mount;
 	mp = dp->i_mount;
@@ -277,11 +277,11 @@ xfs_dir2_sf_addname(
 	int			incr_isize;	/* total change in size */
 	int			incr_isize;	/* total change in size */
 	int			new_isize;	/* di_size after adding name */
 	int			new_isize;	/* di_size after adding name */
 	int			objchange;	/* changing to 8-byte inodes */
 	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			old_isize;	/* di_size before adding name */
 	int			pick;		/* which algorithm to use */
 	int			pick;		/* which algorithm to use */
 	xfs_dir2_sf_t		*sfp;		/* shortform structure */
 	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);
 	xfs_dir2_trace_args("sf_addname", args);
 	ASSERT(xfs_dir2_sf_lookup(args) == ENOENT);
 	ASSERT(xfs_dir2_sf_lookup(args) == ENOENT);

+ 1 - 1
fs/xfs/xfs_dir_leaf.c

@@ -628,7 +628,7 @@ xfs_dir_leaf_to_shortform(xfs_da_args_t *iargs)
 	xfs_dir_leaf_name_t *namest;
 	xfs_dir_leaf_name_t *namest;
 	xfs_da_args_t args;
 	xfs_da_args_t args;
 	xfs_inode_t *dp;
 	xfs_inode_t *dp;
-	xfs_ino_t parent;
+	xfs_ino_t parent = 0;
 	char *tmpbuffer;
 	char *tmpbuffer;
 	int retval, i;
 	int retval, i;
 	xfs_dabuf_t *bp;
 	xfs_dabuf_t *bp;

+ 7 - 0
fs/xfs/xfs_ialloc_btree.c

@@ -550,6 +550,13 @@ xfs_inobt_insrec(
 	int			ptr;	/* index in btree block for this rec */
 	int			ptr;	/* index in btree block for this rec */
 	xfs_inobt_rec_t		*rp=NULL;	/* pointer to btree records */
 	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
 	 * If we made it to the root level, allocate a new root block
 	 * and we're done.
 	 * and we're done.