Re: [PATCH] blk-mq: Fix races between iterating over requests and freeing requests

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

 



On 3/23/21 6:34 AM, John Garry wrote:
> On 19/03/2021 01:00, Bart Van Assche wrote:
>> Multiple users have reported use-after-free complaints similar to the
>> following (see also https://lore.kernel.org/linux-block/1545261885.185366.488.camel@xxxxxxx/):
>>
>> BUG: KASAN: use-after-free in bt_iter+0x86/0xf0
>> Read of size 8 at addr ffff88803b335240 by task fio/21412
>>
>> CPU: 0 PID: 21412 Comm: fio Tainted: G        W         4.20.0-rc6-dbg+ #3
>> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
>> Call Trace:
>>   dump_stack+0x86/0xca
>>   print_address_description+0x71/0x239
>>   kasan_report.cold.5+0x242/0x301
>>   __asan_load8+0x54/0x90
>>   bt_iter+0x86/0xf0
>>   blk_mq_queue_tag_busy_iter+0x373/0x5e0
>>   blk_mq_in_flight+0x96/0xb0
>>   part_in_flight+0x40/0x140
>>   part_round_stats+0x18e/0x370
>>   blk_account_io_start+0x3d7/0x670
>>   blk_mq_bio_to_request+0x19c/0x3a0
>>   blk_mq_make_request+0x7a9/0xcb0
>>   generic_make_request+0x41d/0x960
>>   submit_bio+0x9b/0x250
>>   do_blockdev_direct_IO+0x435c/0x4c70
>>   __blockdev_direct_IO+0x79/0x88
>>   ext4_direct_IO+0x46c/0xc00
>>   generic_file_direct_write+0x119/0x210
>>   __generic_file_write_iter+0x11c/0x280
>>   ext4_file_write_iter+0x1b8/0x6f0
>>   aio_write+0x204/0x310
>>   io_submit_one+0x9d3/0xe80
>>   __x64_sys_io_submit+0x115/0x340
>>   do_syscall_64+0x71/0x210
>>
> 
> Hi Bart,
> 
> Do we have any performance figures to say that the effect is negligible?

I ran this through my usual peak testing, it's pretty good at finding
any changes in performance related to changes in overhead. The workload
is a pretty simple 512b random read, QD 128, using io_uring and polled
IO.

It seems to cause a slight slowdown for me. Performance before the patch
is around 3.23-3.27M IOPS, and after we're at around 3.20-3.22. Looking
at perf diff, the most interesting bits seem to be:


2.09%     -1.05%  [kernel.vmlinux]  [k] blk_mq_get_tag
0.48%     +0.98%  [kernel.vmlinux]  [k] __do_sys_io_uring_enter
1.49%     +0.85%  [kernel.vmlinux]  [k] __blk_mq_alloc_request
          +0.71%  [kernel.vmlinux]  [k] __blk_mq_free_request

which seems to show some shifting around of cost (often happens), but
generally up a bit looking at the blk side.

So nothing really major here, and I don't think it's something that
should getting this fixed. John, I can run your series through the same,
let me know.

-- 
Jens Axboe




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux