[miklos-vfs:overlayfs-next 25/26] fs//overlayfs/super.c:1133:2: warning: 'numlower' may be used uninitialized in this function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git overlayfs-next
head:   17d55447441297291dff3c860ee30c9968c165b8
commit: 2c856d79afbce7c2649e0119fb67e9e63f76d663 [25/26] ovl: clean up getting lower layers
config: i386-randconfig-x075-201745 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        git checkout 2c856d79afbce7c2649e0119fb67e9e63f76d663
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   fs//overlayfs/super.c: In function 'ovl_fill_super':
>> fs//overlayfs/super.c:1133:2: warning: 'numlower' may be used uninitialized in this function [-Wmaybe-uninitialized]
     for (i = 0; i < numlower; i++)
     ^~~
   fs//overlayfs/super.c:1070:25: note: 'numlower' was declared here
     unsigned int stacklen, numlower, i;
                            ^~~~~~~~
>> fs//overlayfs/super.c:1069:15: warning: 'stack' may be used uninitialized in this function [-Wmaybe-uninitialized]
     struct path *stack;
                  ^~~~~

vim +/numlower +1133 fs//overlayfs/super.c

82d1e76b Miklos Szeredi 2017-11-08  1063  
2c856d79 Miklos Szeredi 2017-11-08  1064  static struct ovl_entry *ovl_get_lowerstack(struct super_block *sb,
2c856d79 Miklos Szeredi 2017-11-08  1065  					    struct ovl_fs *ufs)
b4bf599b Miklos Szeredi 2017-11-08  1066  {
b4bf599b Miklos Szeredi 2017-11-08  1067  	int err;
b4bf599b Miklos Szeredi 2017-11-08  1068  	char *lowertmp, *lower;
b4bf599b Miklos Szeredi 2017-11-08 @1069  	struct path *stack;
b4bf599b Miklos Szeredi 2017-11-08  1070  	unsigned int stacklen, numlower, i;
b4bf599b Miklos Szeredi 2017-11-08  1071  	bool remote = false;
2c856d79 Miklos Szeredi 2017-11-08  1072  	struct ovl_entry *oe;
b4bf599b Miklos Szeredi 2017-11-08  1073  
b4bf599b Miklos Szeredi 2017-11-08  1074  	err = -ENOMEM;
b4bf599b Miklos Szeredi 2017-11-08  1075  	lowertmp = kstrdup(ufs->config.lowerdir, GFP_KERNEL);
b4bf599b Miklos Szeredi 2017-11-08  1076  	if (!lowertmp)
2c856d79 Miklos Szeredi 2017-11-08  1077  		goto out_err;
b4bf599b Miklos Szeredi 2017-11-08  1078  
b4bf599b Miklos Szeredi 2017-11-08  1079  	err = -EINVAL;
b4bf599b Miklos Szeredi 2017-11-08  1080  	stacklen = ovl_split_lowerdirs(lowertmp);
b4bf599b Miklos Szeredi 2017-11-08  1081  	if (stacklen > OVL_MAX_STACK) {
b4bf599b Miklos Szeredi 2017-11-08  1082  		pr_err("overlayfs: too many lower directories, limit is %d\n",
b4bf599b Miklos Szeredi 2017-11-08  1083  		       OVL_MAX_STACK);
2c856d79 Miklos Szeredi 2017-11-08  1084  		goto out_err;
b4bf599b Miklos Szeredi 2017-11-08  1085  	} else if (!ufs->config.upperdir && stacklen == 1) {
b4bf599b Miklos Szeredi 2017-11-08  1086  		pr_err("overlayfs: at least 2 lowerdir are needed while upperdir nonexistent\n");
2c856d79 Miklos Szeredi 2017-11-08  1087  		goto out_err;
b4bf599b Miklos Szeredi 2017-11-08  1088  	}
b4bf599b Miklos Szeredi 2017-11-08  1089  
b4bf599b Miklos Szeredi 2017-11-08  1090  	err = -ENOMEM;
b4bf599b Miklos Szeredi 2017-11-08  1091  	stack = kcalloc(stacklen, sizeof(struct path), GFP_KERNEL);
b4bf599b Miklos Szeredi 2017-11-08  1092  	if (!stack)
2c856d79 Miklos Szeredi 2017-11-08  1093  		goto out_err;
b4bf599b Miklos Szeredi 2017-11-08  1094  
b4bf599b Miklos Szeredi 2017-11-08  1095  	err = -EINVAL;
b4bf599b Miklos Szeredi 2017-11-08  1096  	lower = lowertmp;
b4bf599b Miklos Szeredi 2017-11-08  1097  	for (numlower = 0; numlower < stacklen; numlower++) {
b4bf599b Miklos Szeredi 2017-11-08  1098  		err = ovl_lower_dir(lower, &stack[numlower], ufs,
b4bf599b Miklos Szeredi 2017-11-08  1099  				    &sb->s_stack_depth, &remote);
b4bf599b Miklos Szeredi 2017-11-08  1100  		if (err)
2c856d79 Miklos Szeredi 2017-11-08  1101  			goto out_err;
b4bf599b Miklos Szeredi 2017-11-08  1102  
b4bf599b Miklos Szeredi 2017-11-08  1103  		lower = strchr(lower, '\0') + 1;
b4bf599b Miklos Szeredi 2017-11-08  1104  	}
b4bf599b Miklos Szeredi 2017-11-08  1105  
b4bf599b Miklos Szeredi 2017-11-08  1106  	err = -EINVAL;
b4bf599b Miklos Szeredi 2017-11-08  1107  	sb->s_stack_depth++;
b4bf599b Miklos Szeredi 2017-11-08  1108  	if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
b4bf599b Miklos Szeredi 2017-11-08  1109  		pr_err("overlayfs: maximum fs stacking depth exceeded\n");
2c856d79 Miklos Szeredi 2017-11-08  1110  		goto out_err;
b4bf599b Miklos Szeredi 2017-11-08  1111  	}
b4bf599b Miklos Szeredi 2017-11-08  1112  
2c856d79 Miklos Szeredi 2017-11-08  1113  	err = ovl_get_lower_layers(ufs, stack, numlower);
2c856d79 Miklos Szeredi 2017-11-08  1114  	if (err)
2c856d79 Miklos Szeredi 2017-11-08  1115  		goto out_err;
2c856d79 Miklos Szeredi 2017-11-08  1116  
2c856d79 Miklos Szeredi 2017-11-08  1117  	err = -ENOMEM;
2c856d79 Miklos Szeredi 2017-11-08  1118  	oe = ovl_alloc_entry(numlower);
2c856d79 Miklos Szeredi 2017-11-08  1119  	if (!oe)
2c856d79 Miklos Szeredi 2017-11-08  1120  		goto out_err;
2c856d79 Miklos Szeredi 2017-11-08  1121  
2c856d79 Miklos Szeredi 2017-11-08  1122  	for (i = 0; i < numlower; i++) {
2c856d79 Miklos Szeredi 2017-11-08  1123  		oe->lowerstack[i].dentry = dget(stack[i].dentry);
2c856d79 Miklos Szeredi 2017-11-08  1124  		oe->lowerstack[i].layer = &ufs->lower_layers[i];
2c856d79 Miklos Szeredi 2017-11-08  1125  	}
b4bf599b Miklos Szeredi 2017-11-08  1126  
b4bf599b Miklos Szeredi 2017-11-08  1127  	if (remote)
b4bf599b Miklos Szeredi 2017-11-08  1128  		sb->s_d_op = &ovl_reval_dentry_operations;
b4bf599b Miklos Szeredi 2017-11-08  1129  	else
b4bf599b Miklos Szeredi 2017-11-08  1130  		sb->s_d_op = &ovl_dentry_operations;
b4bf599b Miklos Szeredi 2017-11-08  1131  
b4bf599b Miklos Szeredi 2017-11-08  1132  out:
b4bf599b Miklos Szeredi 2017-11-08 @1133  	for (i = 0; i < numlower; i++)
b4bf599b Miklos Szeredi 2017-11-08  1134  		path_put(&stack[i]);
b4bf599b Miklos Szeredi 2017-11-08  1135  	kfree(stack);
2c856d79 Miklos Szeredi 2017-11-08  1136  	kfree(lowertmp);
2c856d79 Miklos Szeredi 2017-11-08  1137  
2c856d79 Miklos Szeredi 2017-11-08  1138  	return oe;
2c856d79 Miklos Szeredi 2017-11-08  1139  
2c856d79 Miklos Szeredi 2017-11-08  1140  out_err:
2c856d79 Miklos Szeredi 2017-11-08  1141  	oe = ERR_PTR(err);
b4bf599b Miklos Szeredi 2017-11-08  1142  	goto out;
b4bf599b Miklos Szeredi 2017-11-08  1143  }
b4bf599b Miklos Szeredi 2017-11-08  1144  

:::::: The code at line 1133 was first introduced by commit
:::::: b4bf599bd9ef3361bedaab2ee2edd945fe1d290c ovl: split out ovl_get_lowerstack() from ovl_fill_super()

:::::: TO: Miklos Szeredi <mszeredi@xxxxxxxxxx>
:::::: CC: Miklos Szeredi <mszeredi@xxxxxxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux