Thread (8 messages) 8 messages, 5 authors, 2013-06-13

Re: [PATCH linux-next] DM RAID: validate_raid_redundancy: Silence uninitialized variable warning

From: NeilBrown <hidden>
Date: 2013-02-20 22:38:02
Also in: dm-devel, lkml

On Wed, 20 Feb 2013 23:16:37 +0100 Paul Menzel [off-list ref]
wrote:
Dear Tim,


thanks for the patch.


Am Mittwoch, den 20.02.2013, 13:31 -0700 schrieb Tim Gardner:

Noting the `gcc` version and build environment is never wrong. ;-)
quoted
drivers/md/dm-raid.c: In function 'raid_ctr':
drivers/md/dm-raid.c:453:53: warning: 'rebuilds_per_group' may be used uninitialized in this function [-Wuninitialized]
drivers/md/dm-raid.c:383:11: note: 'rebuilds_per_group' was declared here

It appears unlikely that rebuilds_per_group could be used before set,
Why? Otherwise the compiler would not complain, right?
It is not simply unlikely, it is impossible.  But gcc isn't that clever yet.
quoted
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -380,7 +380,7 @@ static int validate_region_size(struct raid_set *rs, unsigned long region_size)
 static int validate_raid_redundancy(struct raid_set *rs)
 {
 	unsigned i, rebuild_cnt = 0;
-	unsigned rebuilds_per_group, copies, d;
+	unsigned rebuilds_per_group = 0, copies, d;
This should either be:
        unsigned uninitialized_var(rebuilds_per_group);
        unsigned copies, d;

which the old way and is being deprecated, but at least is consistent with
the kernel as it is, or

        unsigned rebuilds_per_group = 0 /* GCC */;
	unsigned copies,d;

which is apparently the new way which I believe is due to be imposed on the
kernel immediately after 3.9-rc1
   https://lwn.net/Articles/529954/

NeilBrown

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help