• Jens Axboe's avatar
    sbitmap: silence data race warning · 9f8b93a7
    Jens Axboe authored
    KCSAN complaints about the sbitmap hint update:
    
    ==================================================================
    BUG: KCSAN: data-race in sbitmap_queue_clear / sbitmap_queue_clear
    
    write to 0xffffe8ffffd145b8 of 4 bytes by interrupt on cpu 1:
     sbitmap_queue_clear+0xca/0xf0 lib/sbitmap.c:606
     blk_mq_put_tag+0x82/0x90
     __blk_mq_free_request+0x114/0x180 block/blk-mq.c:507
     blk_mq_free_request+0x2c8/0x340 block/blk-mq.c:541
     __blk_mq_end_request+0x214/0x230 block/blk-mq.c:565
     blk_mq_end_request+0x37/0x50 block/blk-mq.c:574
     lo_complete_rq+0xca/0x170 drivers/block/loop.c:541
     blk_complete_reqs block/blk-mq.c:584 [inline]
     blk_done_softirq+0x69/0x90 block/blk-mq.c:589
     __do_softirq+0x12c/0x26e kernel/softirq.c:558
     run_ksoftirqd+0x13/0x20 kernel/softirq.c:920
     smpboot_thread_fn+0x22f/0x330 kernel/smpboot.c:164
     kthread+0x262/0x280 kernel/kthread.c:319
     ret_from_fork+0x1f/0x30
    
    write to 0xffffe8ffffd145b8 of 4 bytes by interrupt on cpu 0:
     sbitmap_queue_clear+0xca/0xf0 lib/sbitmap.c:606
     blk_mq_put_tag+0x82/0x90
     __blk_mq_free_request+0x114/0x180 block/blk-mq.c:507
     blk_mq_free_request+0x2c8/0x340 block/blk-mq.c:541
     __blk_mq_end_request+0x214/0x230 block/blk-mq.c:565
     blk_mq_end_request+0x37/0x50 block/blk-mq.c:574
     lo_complete_rq+0xca/0x170 drivers/block/loop.c:541
     blk_complete_reqs block/blk-mq.c:584 [inline]
     blk_done_softirq+0x69/0x90 block/blk-mq.c:589
     __do_softirq+0x12c/0x26e kernel/softirq.c:558
     run_ksoftirqd+0x13/0x20 kernel/softirq.c:920
     smpboot_thread_fn+0x22f/0x330 kernel/smpboot.c:164
     kthread+0x262/0x280 kernel/kthread.c:319
     ret_from_fork+0x1f/0x30
    
    value changed: 0x00000035 -> 0x00000044
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 10 Comm: ksoftirqd/0 Not tainted 5.15.0-rc6-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    ==================================================================
    
    which is a data race, but not an important one. This is just updating the
    percpu alloc hint, and the reader of that hint doesn't ever require it to
    be valid.
    
    Just annotate it with data_race() to silence this one.
    
    Reported-by: syzbot+4f8bfd804b4a1f95b8f6@syzkaller.appspotmail.com
    Acked-by: default avatarMarco Elver <elver@google.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    9f8b93a7
sbitmap.c 18.6 KB