2011-06-03 01:00:21

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warning from Linus' tree

Hi all,

With Linus' tree, today's linux-next build (powercp ppc64_defconfig)
produced this warning:

fs/btrfs/delayed-inode.c: In function 'btrfs_delayed_update_inode':
fs/btrfs/delayed-inode.c:1598:6: warning: 'ret' may be used uninitialized in this function

Introduced by commit 16cdcec736cd ("btrfs: implement delayed inode items
operation").
--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/


Attachments:
(No filename) (451.00 B)
(No filename) (490.00 B)
Download all attachments

2011-06-03 14:50:48

by David Sterba

[permalink] [raw]
Subject: [PATCH] btrfs: fix uninitialized variable warning

From: David Sterba <[email protected]>

With Linus' tree, today's linux-next build (powercp ppc64_defconfig)
produced this warning:

fs/btrfs/delayed-inode.c: In function 'btrfs_delayed_update_inode':
fs/btrfs/delayed-inode.c:1598:6: warning: 'ret' may be used
uninitialized in this function

Introduced by commit 16cdcec736cd ("btrfs: implement delayed inode items
operation").

This fixes a bug in btrfs_update_inode(): if the returned value from
btrfs_delayed_update_inode is a nonzero garbage, inode stat data are not
updated and several call paths may hit a BUG_ON or fail with strange
code.

Reported-by: Stephen Rothwell <[email protected]>
Signed-off-by: David Sterba <[email protected]>
---

patch pushed to git://repo.or.cz/linux-2.6/btrfs-unstable.git #fixes

fs/btrfs/delayed-inode.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 01e2950..8cb012f 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -1595,7 +1595,7 @@ int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
struct btrfs_root *root, struct inode *inode)
{
struct btrfs_delayed_node *delayed_node;
- int ret;
+ int ret = 0;

delayed_node = btrfs_get_or_create_delayed_node(inode);
if (IS_ERR(delayed_node))
--
1.7.5.2.353.g5df3e

2011-06-03 14:56:58

by Chris Mason

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning

Excerpts from David Sterba's message of 2011-06-03 10:50:14 -0400:
> From: David Sterba <[email protected]>
>
> With Linus' tree, today's linux-next build (powercp ppc64_defconfig)
> produced this warning:
>
> fs/btrfs/delayed-inode.c: In function 'btrfs_delayed_update_inode':
> fs/btrfs/delayed-inode.c:1598:6: warning: 'ret' may be used
> uninitialized in this function
>
> Introduced by commit 16cdcec736cd ("btrfs: implement delayed inode items
> operation").
>
> This fixes a bug in btrfs_update_inode(): if the returned value from
> btrfs_delayed_update_inode is a nonzero garbage, inode stat data are not
> updated and several call paths may hit a BUG_ON or fail with strange
> code.

Ugh, thanks! It looks like the gcc uninit stuff isn't as verbose as it
used to be, but it does catch a bunch of allocated/set but not used
vars.

I have a nitems = 0 fix in my tree as well.

-chris