Re: XFS warning in 2.6.18-rc4

From: Jesper Juhl
Date: Thu Aug 10 2006 - 19:45:27 EST

On 10/08/06, Nathan Scott <nathans@xxxxxxx> wrote:
On Wed, Aug 09, 2006 at 11:04:53PM +0300, Meelis Roos wrote:
> fs/xfs/xfs_bmap.c: In function 'xfs_bmapi':
> fs/xfs/xfs_bmap.c:2662: warning: 'rtx' is used uninitialized in this function

You have a particularly dense compiler, unfortunately. This code
has always been this way, its just a false cc warning that can be
safely ignored until you upgrade to a fixed compiler (unless I'm
missing something - please enlighten me if so). It does seem to
be the case that there is no way 'rtx' will be used uninitialised
when xfs_rtpick_extent() doesn't fail... no?

Ok, I may be reading something wrong here, but I think the warning is
actually not correct.

In fs/xfs/xfs_rtalloc.c::xfs_rtpick_extent() there is this code :

if ((error = xfs_trans_iget(mp, tp, mp->m_sb.sb_rbmino, 0,
return error;
before anything even touches 'pick' (which is the last argument of
type "xfs_rtblock_t *" which is what "&rtx" is being passed to that
function as, from fs/xfs/xfs_bmap.c::xfs_bmap_rtalloc() at line 2659
before 'rtx' then used at line 2662.

Look at this block of code from fs/xfs/xfs_bmap.c::xfs_bmap_rtalloc() :

2658: if (ap->eof && ap->off == 0) {
2659: error = xfs_rtpick_extent(mp, ap->tp, ralen, &rtx);
2660: if (error)
2661: return error;
2662: ap->rval = rtx * mp->m_sb.sb_rextsize;
2663: } else {
2664: ap->rval = 0;
2665: }

'rtx' has not been initialized in this function before this block of code.
If the call to xfs_rtpick_extent() should happen to fail from the
check quoted above, then 'rtx' will in fact be used uninitialized in
line 2662 - except that will never happen, because if the check in In
fs/xfs/xfs_rtalloc.c::xfs_rtpick_extent() fails then error will be !=
0 and then well never get down to line 2662.

Or am I missing something ?

PS. Above line numbers etc are from 2.6.18-rc4.

Jesper Juhl <jesper.juhl@xxxxxxxxx>
Don't top-post
Plain text mails only, please
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at