Subject: Re: [xfs-masters] linux-next: arm allmodconfig

From: Ingo Molnar <[email-masked]>
Date: Wed, 29 Oct 2008 09:24:59 +0100

* Dave Chinner <[email-masked]> wrote:

> > > fs/xfs/xfs_rtalloc.c: In function `xfs_growfs_rt':
> > > fs/xfs/xfs_rtalloc.c:1875: warning: 'tp' might be used uninitialized in this function
> 
> False positive, and I don't get this reported, either.
> 
> Hold on - the above gcc binary only emits a warning for the 
> xfs_growfs_rt issue when CONFIG_CC_OPTIMIZE_FOR_SIZE=y is set. It 
> still doesn't catch the quota bug, though. This is so fucked up....

FYI, i've got 3 XFS warnings mapped in tip/auto-warnings-next:

 earth4:~/tip> gll linus..auto-warnings-next | grep xfs

 ec2f37c: work around warning in fs/xfs/xfs_mount.c
 8501db3: work around warning in fs/xfs/xfs_rtalloc.c
 8077af8: warnings: fix xfs posix acl

you can find those commits in the auto-warnings-next branch of -tip:

  http://people.redhat.com/mingo/tip.git/README

the rtalloc annotation is below. I went through the flow and the code 
seems to be correct and GCC is wrong.

	Ingo

------------->
From 8501db35588df4f35d67d8ba207422006a214ae7 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email-masked]>
Date: Mon, 18 Aug 2008 15:21:19 +0200
Subject: [PATCH] work around warning in fs/xfs/xfs_rtalloc.c
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

fix warning:

  fs/xfs/xfs_rtalloc.c: In function ‘xfs_growfs_rt’:
  fs/xfs/xfs_rtalloc.c:1875: warning: ‘tp’ may be used uninitialized in this function

This is a spurious gcc warning - it does not realize the correct/bug-free
flow of logic regarding the 'error' and 'tp' variables.

No code changed:
   7c10fd959065115c8e252ff5a861a01e  xfs_rtalloc.o.before.asm
   7c10fd959065115c8e252ff5a861a01e  xfs_rtalloc.o.after.asm

Signed-off-by: Ingo Molnar <[email-masked]>
---
 fs/xfs/xfs_rtalloc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index e2f68de..fe5de08 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -1872,7 +1872,7 @@ xfs_growfs_rt(
 	xfs_extlen_t	rsumblocks;	/* current number of rt summary blks */
 	xfs_sb_t	*sbp;		/* old superblock */
 	xfs_fsblock_t	sumbno;		/* summary block number */
-	xfs_trans_t	*tp;		/* transaction pointer */
+	xfs_trans_t	*uninitialized_var(tp);	/* transaction pointer */
 
 	sbp = &mp->m_sb;
 	cancelflags = 0;