Alexander Potapenko
4d608baac5
block: Initialize cfqq->ioprio_class in cfq_get_queue()
...
KMSAN (KernelMemorySanitizer, a new error detection tool) reports use of
uninitialized memory in cfq_init_cfqq():
==================================================================
BUG: KMSAN: use of unitialized memory
...
Call Trace:
[< inline >] __dump_stack lib/dump_stack.c:15
[<ffffffff8202ac97>] dump_stack+0x157/0x1d0 lib/dump_stack.c:51
[<ffffffff813e9b65>] kmsan_report+0x205/0x360 ??:?
[<ffffffff813eabbb>] __msan_warning+0x5b/0xb0 ??:?
[< inline >] cfq_init_cfqq block/cfq-iosched.c:3754
[<ffffffff8201e110>] cfq_get_queue+0xc80/0x14d0 block/cfq-iosched.c:3857
...
origin:
[<ffffffff8103ab37>] save_stack_trace+0x27/0x50 arch/x86/kernel/stacktrace.c:67
[<ffffffff813e836b>] kmsan_internal_poison_shadow+0xab/0x150 ??:?
[<ffffffff813e88ab>] kmsan_poison_slab+0xbb/0x120 ??:?
[< inline >] allocate_slab mm/slub.c:1627
[<ffffffff813e533f>] new_slab+0x3af/0x4b0 mm/slub.c:1641
[< inline >] new_slab_objects mm/slub.c:2407
[<ffffffff813e0ef3>] ___slab_alloc+0x323/0x4a0 mm/slub.c:2564
[< inline >] __slab_alloc mm/slub.c:2606
[< inline >] slab_alloc_node mm/slub.c:2669
[<ffffffff813dfb42>] kmem_cache_alloc_node+0x1d2/0x1f0 mm/slub.c:2746
[<ffffffff8201d90d>] cfq_get_queue+0x47d/0x14d0 block/cfq-iosched.c:3850
...
==================================================================
(the line numbers are relative to 4.8-rc6, but the bug persists
upstream)
The uninitialized struct cfq_queue is created by kmem_cache_alloc_node()
and then passed to cfq_init_cfqq(), which accesses cfqq->ioprio_class
before it's initialized.
Signed-off-by: Alexander Potapenko <glider@google.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2017-01-23 08:30:28 -07:00
..
2017-01-17 09:02:31 -07:00
2016-10-21 15:45:47 -06:00
2016-10-28 08:45:17 -06:00
2016-12-09 08:30:51 -07:00
2017-01-18 15:37:27 -07:00
2017-01-17 10:04:20 -07:00
2017-01-17 10:04:20 -07:00
2017-01-17 10:04:20 -07:00
2015-10-21 14:43:45 -06:00
2017-01-17 10:04:20 -07:00
2016-12-09 08:30:51 -07:00
2016-12-13 10:19:16 -08:00
2017-01-17 10:04:20 -07:00
2016-11-08 17:30:00 -05:00
2016-09-19 08:21:51 -06:00
2017-01-17 10:04:31 -07:00
2017-01-17 10:04:31 -07:00
2017-01-17 10:04:20 -07:00
2017-01-20 09:05:53 -07:00
2017-01-20 09:05:53 -07:00
2017-01-20 09:05:53 -07:00
2017-01-17 10:04:20 -07:00
2016-12-13 10:19:16 -08:00
2016-10-15 10:03:15 -07:00
2016-12-09 13:08:35 -07:00
2016-11-10 13:53:26 -07:00
2016-12-13 10:19:16 -08:00
2017-01-17 10:04:20 -07:00
2016-10-28 08:45:17 -06:00
2015-12-22 09:38:34 -07:00
2017-01-02 09:48:47 -07:00
2016-11-28 10:27:03 -07:00
2016-10-24 20:51:22 -06:00
2017-01-17 10:03:42 -07:00
2015-09-19 18:57:09 -07:00
2016-12-14 10:49:33 -08:00
2016-12-22 23:03:42 -05:00
2017-01-23 08:30:28 -07:00
2014-01-21 20:18:26 -08:00
2016-04-04 10:41:08 -07:00
2017-01-17 10:03:33 -07:00
2017-01-19 07:43:05 -07:00
2016-08-04 14:19:16 -06:00
2016-12-24 11:46:01 -08:00
2016-07-01 08:39:24 -06:00
2016-11-10 13:53:40 -07:00
2017-01-17 10:04:31 -07:00
2017-01-17 10:04:25 -07:00
2017-01-17 10:04:25 -07:00
2017-01-17 10:03:33 -07:00
2016-12-01 07:56:53 -07:00
2016-12-24 11:46:01 -08:00
2015-10-21 14:42:38 -06:00