Hi Christoph,
I love your patch! Perhaps something to improve:
[auto build test WARNING on song-md/md-next]
[also build test WARNING on sparc-next/master sparc/master linus/master v5.8-rc1
next-20200615]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see
https://stackoverflow.com/a/37406982]
url:
https://github.com/0day-ci/linux/commits/Christoph-Hellwig/init-remove-th...
base:
git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git md-next
config: i386-randconfig-s001-20200615 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-rc1-3-g55607964-dirty
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/md/md-autodetect.c:164:38: sparse: sparse: incorrect type
in argument 1 (different address spaces) @@ expected char const [noderef]
<asn:1> *filename @@ got char * @@
> drivers/md/md-autodetect.c:164:38: sparse: expected char const [noderef]
<asn:1> *filename
> drivers/md/md-autodetect.c:164:38: sparse: got char *
drivers/md/md-autodetect.c:185:32: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected char const [noderef] <asn:1> *filename @@ got
char * @@
drivers/md/md-autodetect.c:185:32: sparse: expected char const [noderef]
<asn:1> *filename
drivers/md/md-autodetect.c:185:32: sparse: got char *
drivers/md/md-autodetect.c:249:40: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected char const [noderef] <asn:1> *filename @@
got char * @@
drivers/md/md-autodetect.c:249:40: sparse: expected char const [noderef]
<asn:1> *filename
drivers/md/md-autodetect.c:249:40: sparse: got char *
drivers/md/md-autodetect.c:299:24: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected char const [noderef] <asn:1> *filename @@
got char * @@
drivers/md/md-autodetect.c:299:24: sparse: expected char const [noderef]
<asn:1> *filename
drivers/md/md-autodetect.c:299:24: sparse: got char *
drivers/md/md-autodetect.c:124:21: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected char const [noderef] <asn:1> *pathname @@
got char *name @@
drivers/md/md-autodetect.c:124:21: sparse: expected char const [noderef]
<asn:1> *pathname
drivers/md/md-autodetect.c:124:21: sparse: got char *name
drivers/md/md-autodetect.c:125:27: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected char const [noderef] <asn:1> *filename @@
got char *name @@
drivers/md/md-autodetect.c:125:27: sparse: expected char const [noderef]
<asn:1> *filename
drivers/md/md-autodetect.c:125:27: sparse: got char *name
drivers/md/md-autodetect.c:124:21: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected char const [noderef] <asn:1> *pathname @@
got char *name @@
drivers/md/md-autodetect.c:124:21: sparse: expected char const [noderef]
<asn:1> *pathname
drivers/md/md-autodetect.c:124:21: sparse: got char *name
drivers/md/md-autodetect.c:125:27: sparse: sparse: incorrect type in argument 1
(different address spaces) @@ expected char const [noderef] <asn:1> *filename @@
got char *name @@
drivers/md/md-autodetect.c:125:27: sparse: expected char const [noderef]
<asn:1> *filename
drivers/md/md-autodetect.c:125:27: sparse: got char *name
vim +164 drivers/md/md-autodetect.c
6fc96eea53684d drivers/md/md-autodetect.c Christoph Hellwig 2020-06-15 127
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 128 static void
__init md_setup_drive(void)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 129 {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 130 int minor,
i, ent, partitioned;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 131 dev_t dev;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 132 dev_t
devices[MD_SB_DISKS+1];
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 133
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 134 for (ent =
0; ent < md_setup_ents ; ent++) {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 135 int fd;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 136 int err =
0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 137 char
*devname;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 138
mdu_disk_info_t dinfo;
bdaf8529385d51 init/do_mounts_md.c Greg Kroah-Hartman 2005-06-20 139 char
name[16];
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 140
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 141 minor =
md_setup_args[ent].minor;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 142
partitioned = md_setup_args[ent].partitioned;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 143 devname =
md_setup_args[ent].device_names;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 144
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 145
sprintf(name, "/dev/md%s%d", partitioned?"_d":"", minor);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 146 if
(partitioned)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 147 dev =
MKDEV(mdp_major, minor << MdpMinorShift);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 148 else
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 149 dev =
MKDEV(MD_MAJOR, minor);
bdaf8529385d51 init/do_mounts_md.c Greg Kroah-Hartman 2005-06-20 150
create_dev(name, dev);
d613c3e2d84188 init/do_mounts_md.c Harvey Harrison 2008-04-28 151 for (i =
0; i < MD_SB_DISKS && devname != NULL; i++) {
86a04656f6cbe2 init/do_mounts_md.c Christoph Hellwig 2020-06-15 152 struct
kstat stat;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 153 char *p;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 154 char
comp_name[64];
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 155
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 156 p =
strchr(devname, ',');
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 157 if (p)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 158 *p++ =
0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 159
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 160 dev =
name_to_dev_t(devname);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 161 if
(strncmp(devname, "/dev/", 5) == 0)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 162 devname
+= 5;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 163
snprintf(comp_name, 63, "/dev/%s", devname);
86a04656f6cbe2 init/do_mounts_md.c Christoph Hellwig 2020-06-15 @164 if
(vfs_stat(comp_name, &stat) == 0 &&
86a04656f6cbe2 init/do_mounts_md.c Christoph Hellwig 2020-06-15 165
S_ISBLK(stat.mode))
86a04656f6cbe2 init/do_mounts_md.c Christoph Hellwig 2020-06-15 166 dev =
new_decode_dev(stat.rdev);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 167 if (!dev)
{
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 168
printk(KERN_WARNING "md: Unknown device name: %s\n", devname);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 169 break;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 170 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 171
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 172
devices[i] = dev;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 173
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 174 devname =
p;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 175 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 176 devices[i]
= 0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 177
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 178 if (!i)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 179
continue;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 180
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 181
printk(KERN_INFO "md: Loading md%s%d: %s\n",
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 182
partitioned ? "_d" : "", minor,
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 183
md_setup_args[ent].device_names);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 184
bae217ea8c7e12 init/do_mounts_md.c Dominik Brodowski 2018-03-11 185 fd =
ksys_open(name, 0, 0);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 186 if (fd
< 0) {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 187
printk(KERN_ERR "md: open failed - cannot start "
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 188
"array %s\n", name);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 189
continue;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 190 }
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 191 if
(ksys_ioctl(fd, SET_ARRAY_INFO, 0) == -EBUSY) {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 192
printk(KERN_WARNING
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 193
"md: Ignoring md=%d, already autodetected. (Use raid=noautodetect)\n",
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 194
minor);
2ca2a09d6215fd init/do_mounts_md.c Dominik Brodowski 2018-03-11 195
ksys_close(fd);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 196
continue;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 197 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 198
2604b703b6b3db init/do_mounts_md.c NeilBrown 2006-01-06 199 if
(md_setup_args[ent].level != LEVEL_NONE) {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 200 /*
non-persistent */
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 201
mdu_array_info_t ainfo;
2604b703b6b3db init/do_mounts_md.c NeilBrown 2006-01-06 202
ainfo.level = md_setup_args[ent].level;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 203
ainfo.size = 0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 204
ainfo.nr_disks =0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 205
ainfo.raid_disks =0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 206 while
(devices[ainfo.raid_disks])
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 207
ainfo.raid_disks++;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 208
ainfo.md_minor =minor;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 209
ainfo.not_persistent = 1;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 210
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 211
ainfo.state = (1 << MD_SB_CLEAN);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 212
ainfo.layout = 0;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 213
ainfo.chunk_size = md_setup_args[ent].chunk;
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 214 err =
ksys_ioctl(fd, SET_ARRAY_INFO, (long)&ainfo);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 215 for (i =
0; !err && i <= MD_SB_DISKS; i++) {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 216 dev =
devices[i];
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 217 if
(!dev)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 218 break;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 219
dinfo.number = i;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 220
dinfo.raid_disk = i;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 221
dinfo.state = (1<<MD_DISK_ACTIVE)|(1<<MD_DISK_SYNC);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 222
dinfo.major = MAJOR(dev);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 223
dinfo.minor = MINOR(dev);
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 224 err =
ksys_ioctl(fd, ADD_NEW_DISK,
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 225
(long)&dinfo);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 226 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 227 } else {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 228 /*
persistent */
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 229 for (i =
0; i <= MD_SB_DISKS; i++) {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 230 dev =
devices[i];
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 231 if
(!dev)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 232 break;
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 233
dinfo.major = MAJOR(dev);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 234
dinfo.minor = MINOR(dev);
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 235
ksys_ioctl(fd, ADD_NEW_DISK, (long)&dinfo);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 236 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 237 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 238 if (!err)
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 239 err =
ksys_ioctl(fd, RUN_ARRAY, 0);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 240 if (err)
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 241
printk(KERN_WARNING "md: starting md%d failed\n", minor);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 242 else {
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 243 /* reread
the partition table.
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 244 * I
(neilb) and not sure why this is needed, but I cannot
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 245 * boot a
kernel with devfs compiled in from partitioned md
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 246 * array
without it
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 247 */
2ca2a09d6215fd init/do_mounts_md.c Dominik Brodowski 2018-03-11 248
ksys_close(fd);
bae217ea8c7e12 init/do_mounts_md.c Dominik Brodowski 2018-03-11 249 fd =
ksys_open(name, 0, 0);
cbb60b924b9f3e init/do_mounts_md.c Dominik Brodowski 2018-03-13 250
ksys_ioctl(fd, BLKRRPART, 0);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 251 }
2ca2a09d6215fd init/do_mounts_md.c Dominik Brodowski 2018-03-11 252
ksys_close(fd);
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 253 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 254 }
^1da177e4c3f41 init/do_mounts_md.c Linus Torvalds 2005-04-16 255
:::::: The code at line 164 was first introduced by commit
:::::: 86a04656f6cbe246b402b55ce114ff7a59ba68ea init: remove the bstat helper
:::::: TO: Christoph Hellwig <hch(a)lst.de>
:::::: CC: 0day robot <lkp(a)intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org