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

NeilBrown neilb at suse.de
Wed Feb 20 22:37:44 UTC 2013


On Wed, 20 Feb 2013 23:16:37 +0100 Paul Menzel <pm.debian at googlemail.com>
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. ;-)
> 
> > 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.

> > --- 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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20130221/2bcda572/attachment.sig>


More information about the dm-devel mailing list