tree:
https://android.googlesource.com/kernel/common android-3.18
head: e1ada1f8a51f0236f1fe313d134ed401a7bc80f9
commit: acdf2e7c8becbd8453a28b3c9daaf152b6dbe33e [95/206] blktrace: Protect
q->blk_trace with RCU
config: i386-randconfig-s002-20200612 (attached as .config)
compiler: gcc-5 (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-250-g42323db3-dirty
git checkout acdf2e7c8becbd8453a28b3c9daaf152b6dbe33e
# 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 >>)
kernel/trace/blktrace.c:315:12: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct blk_trace *bt @@ got struct blk_trace [noderef]
<asn:4> *[assigned] __ret @@
kernel/trace/blktrace.c:315:12: sparse: expected struct blk_trace *bt
kernel/trace/blktrace.c:315:12: sparse: got struct blk_trace [noderef]
<asn:4> *[assigned] __ret
> kernel/trace/blktrace.c:536:18: sparse: sparse: incorrect type in
initializer (different address spaces) @@ expected struct blk_trace [noderef]
<asn:4> *__ret @@ got struct blk_trace *[assigned] bt @@
> kernel/trace/blktrace.c:536:18: sparse: expected struct blk_trace [noderef]
<asn:4> *__ret
kernel/trace/blktrace.c:536:18: sparse: got struct
blk_trace *[assigned] bt
> kernel/trace/blktrace.c:536:16: sparse: sparse: incorrect type in
assignment (different address spaces) @@ expected struct blk_trace *old_bt @@ got
struct blk_trace [noderef] <asn:4> *[assigned] __ret @@
> kernel/trace/blktrace.c:536:16: sparse: expected struct blk_trace *old_bt
kernel/trace/blktrace.c:536:16: sparse: got struct blk_trace [noderef] <asn:4>
*[assigned] __ret
> kernel/trace/blktrace.c:538:24: sparse: sparse: incorrect type in
initializer (different address spaces) @@ expected struct blk_trace [noderef]
<asn:4> *__ret @@ got struct blk_trace *old_bt @@
kernel/trace/blktrace.c:538:24: sparse: expected struct blk_trace [noderef]
<asn:4> *__ret
> kernel/trace/blktrace.c:538:24: sparse: got struct blk_trace
*old_bt
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted
__be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1218:16: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1225:32: sparse: sparse: incorrect type in initializer
(different base types) @@ expected unsigned long long [usertype] sector_from @@
got restricted __be64 const [usertype] sector_from @@
kernel/trace/blktrace.c:1225:32: sparse: expected unsigned long long [usertype]
sector_from
kernel/trace/blktrace.c:1225:32: sparse: got restricted __be64 const [usertype]
sector_from
kernel/trace/blktrace.c:1227:24: sparse: sparse: incorrect type in assignment
(different base types) @@ expected restricted __be32 [usertype] device_from @@ got
unsigned int @@
kernel/trace/blktrace.c:1227:24: sparse: expected restricted __be32 [usertype]
device_from
kernel/trace/blktrace.c:1227:24: sparse: got unsigned int
kernel/trace/blktrace.c:1228:24: sparse: sparse: incorrect type in assignment
(different base types) @@ expected restricted __be32 [usertype] device_to @@ got
unsigned int @@
kernel/trace/blktrace.c:1228:24: sparse: expected restricted __be32 [usertype]
device_to
kernel/trace/blktrace.c:1228:24: sparse: got unsigned int
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:26: sparse: sparse: cast to restricted __be64
kernel/trace/blktrace.c:1229:24: sparse: sparse: incorrect type in assignment
(different base types) @@ expected restricted __be64 [usertype] sector_from @@ got
unsigned long long @@
kernel/trace/blktrace.c:1229:24: sparse: expected restricted __be64 [usertype]
sector_from
kernel/trace/blktrace.c:1229:24: sparse: got unsigned long long
kernel/trace/blktrace.c:1350:33: sparse: sparse: restricted __be32 degrades to integer
kernel/trace/blktrace.c:1350:55: sparse: sparse: restricted __be32 degrades to integer
kernel/trace/blktrace.c:1351:34: sparse: sparse: cast from restricted __be64
kernel/trace/blktrace.c:1576:12: sparse: sparse: incorrect type in assignment
(different address spaces) @@ expected struct blk_trace *bt @@ got struct
blk_trace [noderef] <asn:4> *[assigned] __ret @@
kernel/trace/blktrace.c:1576:12: sparse: expected struct blk_trace *bt
kernel/trace/blktrace.c:1576:12: sparse: got struct blk_trace [noderef]
<asn:4> *[assigned] __ret
kernel/trace/blktrace.c:1614:18: sparse: sparse: incorrect type in initializer
(different address spaces) @@ expected struct blk_trace [noderef] <asn:4> *__ret
@@ got struct blk_trace *[assigned] bt @@
kernel/trace/blktrace.c:1614:18: sparse: expected struct blk_trace [noderef]
<asn:4> *__ret
kernel/trace/blktrace.c:1614:18: sparse: got struct blk_trace *[assigned] bt
kernel/trace/blktrace.c:1614:16: sparse: sparse: incorrect type in assignment
(different address spaces) @@ expected struct blk_trace *old_bt @@ got struct
blk_trace [noderef] <asn:4> *[assigned] __ret @@
kernel/trace/blktrace.c:1614:16: sparse: expected struct blk_trace *old_bt
kernel/trace/blktrace.c:1614:16: sparse: got struct blk_trace [noderef]
<asn:4> *[assigned] __ret
kernel/trace/blktrace.c:1616:23: sparse: sparse: incorrect type in initializer
(different address spaces) @@ expected struct blk_trace [noderef] <asn:4> *__ret
@@ got struct blk_trace *old_bt @@
kernel/trace/blktrace.c:1616:23: sparse: expected struct blk_trace [noderef]
<asn:4> *__ret
kernel/trace/blktrace.c:1616:23: sparse: got struct blk_trace *old_bt
In file included from include/linux/blkdev.h:4:0,
from kernel/trace/blktrace.c:19:
include/linux/sched.h:1067:42: warning: type qualifiers ignored on function return type
[-Wignored-qualifiers]
const struct sched_group_energy * const(*sched_domain_energy_f)(int cpu);
^
In file included from include/linux/blkdev.h:14:0,
from kernel/trace/blktrace.c:19:
include/linux/pagemap.h: In function 'fault_in_multipages_readable':
include/linux/pagemap.h:633:16: warning: variable 'c' set but not used
[-Wunused-but-set-variable]
volatile char c;
^
vim +536 kernel/trace/blktrace.c
9908c30997b8a7 kernel/trace/blktrace.c Li Zefan 2009-04-14 444
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 445 /*
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 446 * Setup
everything required to start tracing
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 447 */
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 448 int
do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 449
struct block_device *bdev,
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 450
struct blk_user_trace_setup *buts)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 451 {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 452 struct
blk_trace *old_bt, *bt = NULL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 453 struct
dentry *dir = NULL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 454 int ret,
i;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 455
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 456 if
(!buts->buf_size || !buts->buf_nr)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 457 return
-EINVAL;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 458
0497b345e7d067 block/blktrace.c Jens Axboe 2008-10-01 459
strncpy(buts->name, name, BLKTRACE_BDEV_SIZE);
0497b345e7d067 block/blktrace.c Jens Axboe 2008-10-01 460
buts->name[BLKTRACE_BDEV_SIZE - 1] = '\0';
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 461
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 462 /*
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 463 * some
device names have larger paths - convert the slashes
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 464 * to
underscores for this to work as expected
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 465 */
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 466 for (i =
0; i < strlen(buts->name); i++)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 467 if
(buts->name[i] == '/')
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 468
buts->name[i] = '_';
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 469
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 470 bt =
kzalloc(sizeof(*bt), GFP_KERNEL);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 471 if
(!bt)
ad5dd5493a55e4 kernel/trace/blktrace.c Li Zefan 2009-03-27 472 return
-ENOMEM;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 473
ad5dd5493a55e4 kernel/trace/blktrace.c Li Zefan 2009-03-27 474 ret =
-ENOMEM;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 475
bt->sequence = alloc_percpu(unsigned long);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 476 if
(!bt->sequence)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 477 goto
err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 478
313e458f81ec38 block/blktrace.c Rusty Russell 2009-02-20 479
bt->msg_data = __alloc_percpu(BLK_TN_MAX_MSG, __alignof__(char));
64565911cdb57c block/blktrace.c Jens Axboe 2008-05-28 480 if
(!bt->msg_data)
64565911cdb57c block/blktrace.c Jens Axboe 2008-05-28 481 goto
err;
64565911cdb57c block/blktrace.c Jens Axboe 2008-05-28 482
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 483 ret =
-ENOENT;
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 484
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 485
mutex_lock(&blk_tree_mutex);
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 486 if
(!blk_tree_root) {
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 487
blk_tree_root = debugfs_create_dir("block", NULL);
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 488 if
(!blk_tree_root) {
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 489
mutex_unlock(&blk_tree_mutex);
1a17662ea03367 kernel/trace/blktrace.c Li Zefan 2009-03-20 490 goto
err;
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 491 }
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 492 }
b5230b56ee6cae kernel/trace/blktrace.c Li Zefan 2009-03-25 493
mutex_unlock(&blk_tree_mutex);
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 494
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 495 dir =
debugfs_create_dir(buts->name, blk_tree_root);
f48fc4d32e24c0 block/blktrace.c Jens Axboe 2009-01-05 496
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 497 if
(!dir)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 498 goto
err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 499
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 500
bt->dir = dir;
6da127ad0918f9 block/blktrace.c Christof Schmitt 2008-01-11 501
bt->dev = dev;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 502
atomic_set(&bt->dropped, 0);
a404d5576bbe58 kernel/trace/blktrace.c Jan Kara 2013-09-17 503
INIT_LIST_HEAD(&bt->running_list);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 504
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 505 ret =
-EIO;
939b366977d29b block/blktrace.c Arnaldo Carvalho de Melo 2009-02-03 506
bt->dropped_file = debugfs_create_file("dropped", 0444, dir, bt,
939b366977d29b block/blktrace.c Arnaldo Carvalho de Melo 2009-02-03 507
&blk_dropped_fops);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 508 if
(!bt->dropped_file)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 509 goto
err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 510
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 511
bt->msg_file = debugfs_create_file("msg", 0222, dir, bt,
&blk_msg_fops);
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 512 if
(!bt->msg_file)
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 513 goto
err;
02c62304e6af60 block/blktrace.c Alan D. Brunelle 2008-06-11 514
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 515
bt->rchan = relay_open("trace", dir, buts->buf_size,
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 516
buts->buf_nr, &blk_relay_callbacks, bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 517 if
(!bt->rchan)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 518 goto
err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 519
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 520
bt->act_mask = buts->act_mask;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 521 if
(!bt->act_mask)
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 522
bt->act_mask = (u16) -1;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 523
9908c30997b8a7 kernel/trace/blktrace.c Li Zefan 2009-04-14 524
blk_trace_setup_lba(bt, bdev);
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 525
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 526 /*
overwrite with user settings */
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 527 if
(buts->start_lba)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 528
bt->start_lba = buts->start_lba;
d0deef5b14af7d kernel/trace/blktrace.c Shawn Du 2009-04-14 529 if
(buts->end_lba)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 530
bt->end_lba = buts->end_lba;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 531
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 532
bt->pid = buts->pid;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 533
bt->trace_state = Blktrace_setup;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 534
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 535 ret =
-EBUSY;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 @536 old_bt =
xchg(&q->blk_trace, bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 537 if
(old_bt) {
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 @538 (void)
xchg(&q->blk_trace, old_bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 539 goto
err;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 540 }
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 541
17ba97e347bec9 kernel/trace/blktrace.c Li Zefan 2009-03-27 542 if
(atomic_inc_return(&blk_probes_ref) == 1)
cbe28296eb1ac4 kernel/trace/blktrace.c Li Zefan 2009-03-20 543
blk_register_tracepoints();
cbe28296eb1ac4 kernel/trace/blktrace.c Li Zefan 2009-03-20 544
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 545 return
0;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 546 err:
ad5dd5493a55e4 kernel/trace/blktrace.c Li Zefan 2009-03-27 547
blk_trace_free(bt);
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 548 return
ret;
2056a782f8e7e6 block/blktrace.c Jens Axboe 2006-03-23 549 }
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 550
:::::: The code at line 536 was first introduced by commit
:::::: 2056a782f8e7e65fd4bfd027506b4ce1c5e9ccd4 [PATCH] Block queue IO tracing support
(blktrace) as of 2006-03-23
:::::: TO: Jens Axboe <axboe(a)suse.de>
:::::: CC: Jens Axboe <axboe(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org