-
Notifications
You must be signed in to change notification settings - Fork 90
Open
Labels
Description
Here are two reports on commit c58422d251bc
ThreadSanitizer: data-race in kmem_cache_free
Write at 0xffff880485d5fdd0 of size 8 by thread 1206 on CPU 0:
[< inline >] __cache_free mm/slab.c:3384
[<ffffffff812451e2>] kmem_cache_free+0x92/0x480 mm/slab.c:3562
[<ffffffff8150c440>] free_request_struct+0x30/0x40 block/blk-core.c:597
[<ffffffff811d04a5>] mempool_free+0x75/0x130 mm/mempool.c:439
[< inline >] blk_free_request block/blk-core.c:832
[<ffffffff8150d5bb>] __blk_put_request+0x11b/0x200 block/blk-core.c:1424
[<ffffffff8150d71d>] blk_put_request+0x7d/0xb0 block/blk-core.c:1441
[<ffffffff818991cf>] scsi_execute+0x9f/0x2a0 drivers/scsi/scsi_lib.c:259
[<ffffffff818baece>] sr_do_ioctl+0x11e/0x360 drivers/scsi/sr_ioctl.c:209
[<ffffffff818b94c6>] sr_packet+0x56/0xc0 drivers/scsi/sr.c:949
[<ffffffff81988a18>] cdrom_get_media_event+0xa8/0x130 drivers/cdrom/cdrom.c:673
[<ffffffff818bba77>] sr_drive_status+0x97/0x1d0 drivers/scsi/sr_ioctl.c:312
[< inline >] cdrom_ioctl_drive_status drivers/cdrom/cdrom.c:2530
[<ffffffff8198f53e>] cdrom_ioctl+0xdde/0x11f0 drivers/cdrom/cdrom.c:3348
[<ffffffff818b9eb6>] sr_block_ioctl+0xa6/0xf0 drivers/scsi/sr.c:568
[< inline >] __blkdev_driver_ioctl block/ioctl.c:267
[<ffffffff8152c69a>] blkdev_ioctl+0x22a/0xa10 block/ioctl.c:453
[<ffffffff812bed52>] block_ioctl+0x82/0xa0 fs/block_dev.c:1593
[< inline >] vfs_ioctl fs/ioctl.c:43
[<ffffffff8127ffd9>] do_vfs_ioctl+0x449/0x750 fs/ioctl.c:607
[< inline >] SYSC_ioctl fs/ioctl.c:622
[<ffffffff81280359>] SyS_ioctl+0x79/0xa0 fs/ioctl.c:613
[<ffffffff81ee3e11>] entry_SYSCALL_64_fastpath+0x31/0x95 arch/x86/entry/entry_64.S:188
Previous read at 0xffff880485d5fdd0 of size 1 by thread 850 on CPU 0:
[< inline >] test_and_set_bit ./arch/x86/include/asm/bitops.h:231
[< inline >] blk_mark_rq_complete block/blk.h:102
[<ffffffff815200a5>] blk_complete_request+0x25/0x40 block/blk-softirq.c:170
[<ffffffff8189cb63>] scsi_done+0x43/0xb0 drivers/scsi/scsi_lib.c:1749
[<ffffffff818d8b24>] atapi_qc_complete+0xd4/0x6d0 drivers/ata/libata-scsi.c:2738
[<ffffffff818ca835>] __ata_qc_complete+0x155/0x2d0 drivers/ata/libata-core.c:4851
[<ffffffff818cab09>] ata_qc_complete+0x159/0x5c0 drivers/ata/libata-core.c:4921
[<ffffffff818eb34d>] ata_hsm_qc_complete+0x7d/0x1d0 drivers/ata/libata-sff.c:1021
[<ffffffff818ec35d>] ata_sff_hsm_move+0x10d/0xcc0 drivers/ata/libata-sff.c:1293
[<ffffffff818ed02b>] __ata_sff_port_intr+0x11b/0x210 drivers/ata/libata-sff.c:1581
[<ffffffff818ed5a2>] ata_bmdma_port_intr+0x52/0x1f0 drivers/ata/libata-sff.c:2874
[< inline >] __ata_sff_interrupt drivers/ata/libata-sff.c:1626
[<ffffffff818ed898>] ata_bmdma_interrupt+0x158/0x2e0 drivers/ata/libata-sff.c:2899
[<ffffffff810f7082>] handle_irq_event_percpu+0x62/0x2b0 kernel/irq/handle.c:143
[<ffffffff810f736b>] handle_irq_event+0x9b/0xd0 kernel/irq/handle.c:192
[<ffffffff810fc01f>] handle_edge_irq+0x11f/0x370 kernel/irq/chip.c:608
[< inline >] generic_handle_irq_desc include/linux/irqdesc.h:146
[<ffffffff8100a15f>] handle_irq+0x9f/0x230 arch/x86/kernel/irq_64.c:81
[<ffffffff8100946a>] do_IRQ+0x8a/0x170 arch/x86/kernel/irq.c:223
[<ffffffff81ee494a>] common_interrupt+0x8a/0x8f arch/x86/entry/entry_64.S:609
[<ffffffff81ee494a>] common_interrupt+0x8a/0x8f arch/x86/entry/entry_64.S:609
ThreadSanitizer: data-race in kmem_cache_free
Write at 0xffff880485d5fe00 of size 8 by thread 1206 on CPU 0:
[< inline >] __cache_free mm/slab.c:3384
[<ffffffff812451e2>] kmem_cache_free+0x92/0x480 mm/slab.c:3562
[<ffffffff8150c440>] free_request_struct+0x30/0x40 block/blk-core.c:597
[<ffffffff811d04a5>] mempool_free+0x75/0x130 mm/mempool.c:439
[< inline >] blk_free_request block/blk-core.c:832
[<ffffffff8150d5bb>] __blk_put_request+0x11b/0x200 block/blk-core.c:1424
[<ffffffff8150d71d>] blk_put_request+0x7d/0xb0 block/blk-core.c:1441
[<ffffffff818991cf>] scsi_execute+0x9f/0x2a0 drivers/scsi/scsi_lib.c:259
[<ffffffff818baece>] sr_do_ioctl+0x11e/0x360 drivers/scsi/sr_ioctl.c:209
[<ffffffff818b94c6>] sr_packet+0x56/0xc0 drivers/scsi/sr.c:949
[<ffffffff81988a18>] cdrom_get_media_event+0xa8/0x130 drivers/cdrom/cdrom.c:673
[<ffffffff818bba77>] sr_drive_status+0x97/0x1d0 drivers/scsi/sr_ioctl.c:312
[< inline >] cdrom_ioctl_drive_status drivers/cdrom/cdrom.c:2530
[<ffffffff8198f53e>] cdrom_ioctl+0xdde/0x11f0 drivers/cdrom/cdrom.c:3348
[<ffffffff818b9eb6>] sr_block_ioctl+0xa6/0xf0 drivers/scsi/sr.c:568
[< inline >] __blkdev_driver_ioctl block/ioctl.c:267
[<ffffffff8152c69a>] blkdev_ioctl+0x22a/0xa10 block/ioctl.c:453
[<ffffffff812bed52>] block_ioctl+0x82/0xa0 fs/block_dev.c:1593
[< inline >] vfs_ioctl fs/ioctl.c:43
[<ffffffff8127ffd9>] do_vfs_ioctl+0x449/0x750 fs/ioctl.c:607
[< inline >] SYSC_ioctl fs/ioctl.c:622
[<ffffffff81280359>] SyS_ioctl+0x79/0xa0 fs/ioctl.c:613
[<ffffffff81ee3e11>] entry_SYSCALL_64_fastpath+0x31/0x95 arch/x86/entry/entry_64.S:188
Previous write at 0xffff880485d5fe00 of size 8 by thread 850 on CPU 0:
[< inline >] __list_add include/linux/list.h:44
[< inline >] list_add_tail include/linux/list.h:77
[<ffffffff8151ffcc>] __blk_complete_request+0x11c/0x1d0 block/blk-softirq.c:139
[<ffffffff815200b1>] blk_complete_request+0x31/0x40 block/blk-softirq.c:171
[<ffffffff8189cb63>] scsi_done+0x43/0xb0 drivers/scsi/scsi_lib.c:1749
[<ffffffff818d8b24>] atapi_qc_complete+0xd4/0x6d0 drivers/ata/libata-scsi.c:2738
[<ffffffff818ca835>] __ata_qc_complete+0x155/0x2d0 drivers/ata/libata-core.c:4851
[<ffffffff818cab09>] ata_qc_complete+0x159/0x5c0 drivers/ata/libata-core.c:4921
[<ffffffff818eb34d>] ata_hsm_qc_complete+0x7d/0x1d0 drivers/ata/libata-sff.c:1021
[<ffffffff818ec35d>] ata_sff_hsm_move+0x10d/0xcc0 drivers/ata/libata-sff.c:1293
[<ffffffff818ed02b>] __ata_sff_port_intr+0x11b/0x210 drivers/ata/libata-sff.c:1581
[<ffffffff818ed5a2>] ata_bmdma_port_intr+0x52/0x1f0 drivers/ata/libata-sff.c:2874
[< inline >] __ata_sff_interrupt drivers/ata/libata-sff.c:1626
[<ffffffff818ed898>] ata_bmdma_interrupt+0x158/0x2e0 drivers/ata/libata-sff.c:2899
[<ffffffff810f7082>] handle_irq_event_percpu+0x62/0x2b0 kernel/irq/handle.c:143
[<ffffffff810f736b>] handle_irq_event+0x9b/0xd0 kernel/irq/handle.c:192
[<ffffffff810fc01f>] handle_edge_irq+0x11f/0x370 kernel/irq/chip.c:608
[< inline >] generic_handle_irq_desc include/linux/irqdesc.h:146
[<ffffffff8100a15f>] handle_irq+0x9f/0x230 arch/x86/kernel/irq_64.c:81
[<ffffffff8100946a>] do_IRQ+0x8a/0x170 arch/x86/kernel/irq.c:223
[<ffffffff81ee494a>] common_interrupt+0x8a/0x8f arch/x86/entry/entry_64.S:609
[<ffffffff81ee494a>] common_interrupt+0x8a/0x8f arch/x86/entry/entry_64.S:609
__blk_complete_request queues softirq that unblocks scsi_execute/blk_execute_rq on a completion.
KTSAN misses that synchronization for some reason.