====================================================== WARNING: possible circular locking dependency detected syzkaller #0 Not tainted ------------------------------------------------------ syz.1.184/4335 is trying to acquire lock: ffffffff88bb84c0 (pcpu_alloc_mutex){+.+.}-{4:4}, at: pcpu_alloc_noprof+0xd5e/0x2472 mm/percpu.c:1788 but task is already holding lock: ffffaf801a879670 (&q->blkcg_mutex){+.+.}-{4:4}, at: blkg_conf_prep+0xa4/0xf44 block/blk-cgroup.c:849 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 (&q->blkcg_mutex){+.+.}-{4:4}: lock_acquire kernel/locking/lockdep.c:5886 [inline] lock_acquire+0x23c/0x4f0 kernel/locking/lockdep.c:5843 __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x1924 kernel/locking/mutex.c:821 mutex_lock_nested+0x14/0x1c kernel/locking/mutex.c:874 blkcg_activate_policy+0x304/0x8a8 block/blk-cgroup.c:1608 blk_throtl_init+0x2f4/0x4c4 block/blk-throttle.c:1339 tg_set_conf.isra.0+0x22e/0x4a8 block/blk-throttle.c:1368 tg_set_conf_uint+0x28/0x36 block/blk-throttle.c:1411 cgroup_file_write+0x190/0x70e kernel/cgroup/cgroup.c:4412 kernfs_fop_write_iter+0x37c/0x530 fs/kernfs/file.c:345 new_sync_write fs/read_write.c:595 [inline] vfs_write+0x81a/0x1020 fs/read_write.c:687 ksys_write+0x126/0x244 fs/read_write.c:739 __do_sys_write fs/read_write.c:750 [inline] __se_sys_write fs/read_write.c:747 [inline] __riscv_sys_write+0x6e/0xa0 fs/read_write.c:747 syscall_handler+0x92/0x114 arch/riscv/include/asm/syscall.h:112 do_trap_ecall_u+0x4ca/0x658 arch/riscv/kernel/traps.c:341 handle_exception+0x168/0x174 arch/riscv/kernel/entry.S:237 -> #2 (&q->q_usage_counter(io)#17){++++}-{0:0}: lock_acquire kernel/locking/lockdep.c:5886 [inline] lock_acquire+0x23c/0x4f0 kernel/locking/lockdep.c:5843 blk_alloc_queue+0x5b4/0x6f4 block/blk-core.c:504 blk_mq_alloc_queue+0x15e/0x250 block/blk-mq.c:4420 __blk_mq_alloc_disk+0x2a/0xd8 block/blk-mq.c:4467 loop_add+0x43a/0xa90 drivers/block/loop.c:2071 loop_init+0x304/0x33c drivers/block/loop.c:2310 do_one_initcall+0x18a/0xc82 init/main.c:1353 do_initcall_level init/main.c:1415 [inline] do_initcalls init/main.c:1431 [inline] do_basic_setup init/main.c:1451 [inline] kernel_init_freeable+0x6d2/0x7b8 init/main.c:1666 kernel_init+0x30/0x244 init/main.c:1556 ret_from_fork_kernel+0x94/0xe74 arch/riscv/kernel/process.c:230 ret_from_fork_kernel_asm+0x16/0x18 arch/riscv/kernel/entry.S:368 -> #1 (fs_reclaim){+.+.}-{0:0}: lock_acquire kernel/locking/lockdep.c:5886 [inline] lock_acquire+0x23c/0x4f0 kernel/locking/lockdep.c:5843 __fs_reclaim_acquire mm/page_alloc.c:4329 [inline] fs_reclaim_acquire+0xbe/0xf6 mm/page_alloc.c:4343 might_alloc include/linux/sched/mm.h:317 [inline] prepare_alloc_pages+0x146/0x51c mm/page_alloc.c:5048 __alloc_frozen_pages_noprof+0x164/0x2e58 mm/page_alloc.c:5293 __alloc_pages_noprof+0xe/0xce mm/page_alloc.c:5338 __alloc_pages_node_noprof include/linux/gfp.h:291 [inline] alloc_pages_node_noprof include/linux/gfp.h:318 [inline] pcpu_alloc_pages mm/percpu-vm.c:95 [inline] pcpu_populate_chunk+0x16c/0xe7e mm/percpu-vm.c:285 pcpu_alloc_noprof+0x804/0x2472 mm/percpu.c:1876 bpf_map_alloc_percpu+0xb0/0xf8 kernel/bpf/syscall.c:583 prealloc_init kernel/bpf/hashtab.c:339 [inline] htab_map_alloc+0xfce/0x14d0 kernel/bpf/hashtab.c:639 map_create_alloc.constprop.0+0x588/0x1aca kernel/bpf/syscall.c:1534 map_create+0x132/0xb9c kernel/bpf/syscall.c:1644 __sys_bpf+0x63a/0x53da kernel/bpf/syscall.c:6344 __do_sys_bpf kernel/bpf/syscall.c:6486 [inline] __se_sys_bpf kernel/bpf/syscall.c:6483 [inline] __riscv_sys_bpf+0xaa/0x144 kernel/bpf/syscall.c:6483 syscall_handler+0x92/0x114 arch/riscv/include/asm/syscall.h:112 do_trap_ecall_u+0x4ca/0x658 arch/riscv/kernel/traps.c:341 handle_exception+0x168/0x174 arch/riscv/kernel/entry.S:237 -> #0 (pcpu_alloc_mutex){+.+.}-{4:4}: check_noncircular+0x138/0x14c kernel/locking/lockdep.c:2191 check_prev_add kernel/locking/lockdep.c:3181 [inline] check_prevs_add kernel/locking/lockdep.c:3300 [inline] validate_chain kernel/locking/lockdep.c:3924 [inline] __lock_acquire+0xe9c/0x25aa kernel/locking/lockdep.c:5253 lock_acquire kernel/locking/lockdep.c:5886 [inline] lock_acquire+0x23c/0x4f0 kernel/locking/lockdep.c:5843 __mutex_lock_common kernel/locking/mutex.c:646 [inline] __mutex_lock+0x164/0x1924 kernel/locking/mutex.c:821 _mutex_lock_killable+0x16/0x1e kernel/locking/mutex.c:892 pcpu_alloc_noprof+0xd5e/0x2472 mm/percpu.c:1788 percpu_ref_init+0x34/0x362 lib/percpu-refcount.c:72 blkg_alloc+0xcc/0x986 block/blk-cgroup.c:316 blkg_conf_prep+0x404/0xf44 block/blk-cgroup.c:879 tg_set_conf.isra.0+0x1e2/0x4a8 block/blk-throttle.c:1373 tg_set_conf_uint+0x28/0x36 block/blk-throttle.c:1411 cgroup_file_write+0x190/0x70e kernel/cgroup/cgroup.c:4412 kernfs_fop_write_iter+0x37c/0x530 fs/kernfs/file.c:345 new_sync_write fs/read_write.c:595 [inline] vfs_write+0x81a/0x1020 fs/read_write.c:687 ksys_write+0x126/0x244 fs/read_write.c:739 __do_sys_write fs/read_write.c:750 [inline] __se_sys_write fs/read_write.c:747 [inline] __riscv_sys_write+0x6e/0xa0 fs/read_write.c:747 syscall_handler+0x92/0x114 arch/riscv/include/asm/syscall.h:112 do_trap_ecall_u+0x4ca/0x658 arch/riscv/kernel/traps.c:341 handle_exception+0x168/0x174 arch/riscv/kernel/entry.S:237 other info that might help us debug this: Chain exists of: pcpu_alloc_mutex --> &q->q_usage_counter(io)#17 --> &q->blkcg_mutex Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&q->blkcg_mutex); lock(&q->q_usage_counter(io)#17); lock(&q->blkcg_mutex); lock(pcpu_alloc_mutex); *** DEADLOCK *** locks held by syz.1.184/4335: 6, last CPU#1: #0: ffffaf80197670b0 (&f->f_pos_lock){+.+.}-{4:4}, at: fdget_pos+0x28c/0x32c fs/file.c:1259 #1: ffffaf801dadc460 (sb_writers#9){.+.+}-{0:0}, at: percpu_down_read_freezable include/linux/percpu-rwsem.h:83 [inline] #1: ffffaf801dadc460 (sb_writers#9){.+.+}-{0:0}, at: __sb_start_write include/linux/fs/super.h:19 [inline] #1: ffffaf801dadc460 (sb_writers#9){.+.+}-{0:0}, at: sb_start_write include/linux/fs/super.h:125 [inline] #1: ffffaf801dadc460 (sb_writers#9){.+.+}-{0:0}, at: file_start_write include/linux/fs.h:2754 [inline] #1: ffffaf801dadc460 (sb_writers#9){.+.+}-{0:0}, at: vfs_write+0xa7a/0x1020 fs/read_write.c:683 #2: ffffaf802b86c480 (&of->mutex#2){+.+.}-{4:4}, at: kernfs_fop_write_iter+0x29c/0x530 fs/kernfs/file.c:336 #3: ffffaf80309dd3c8 (kn->active#13){.+.+}-{0:0}, at: kernfs_get_active_of fs/kernfs/file.c:73 [inline] #3: ffffaf80309dd3c8 (kn->active#13){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x2f6/0x530 fs/kernfs/file.c:337 #4: ffffaf801a8794f0 (&q->rq_qos_mutex){+.+.}-{4:4}, at: blkg_conf_open_bdev+0x22a/0x3c4 block/blk-cgroup.c:806 #5: ffffaf801a879670 (&q->blkcg_mutex){+.+.}-{4:4}, at: blkg_conf_prep+0xa4/0xf44 block/blk-cgroup.c:849 stack backtrace: CPU: 1 UID: 0 PID: 4335 Comm: syz.1.184 Not tainted syzkaller #0 PREEMPT Hardware name: riscv-virtio,qemu (DT) Call Trace: [] dump_backtrace+0x2e/0x3c arch/riscv/kernel/stacktrace.c:149 [] show_stack+0x30/0x3c arch/riscv/kernel/stacktrace.c:155 [] __dump_stack lib/dump_stack.c:94 [inline] [] dump_stack_lvl+0x114/0x1aa lib/dump_stack.c:120 [] dump_stack+0x1c/0x24 lib/dump_stack.c:129 [] print_circular_bug+0x250/0x29c kernel/locking/lockdep.c:2059 [] check_noncircular+0x138/0x14c kernel/locking/lockdep.c:2191 [] check_prev_add kernel/locking/lockdep.c:3181 [inline] [] check_prevs_add kernel/locking/lockdep.c:3300 [inline] [] validate_chain kernel/locking/lockdep.c:3924 [inline] [] __lock_acquire+0xe9c/0x25aa kernel/locking/lockdep.c:5253 [] lock_acquire kernel/locking/lockdep.c:5886 [inline] [] lock_acquire+0x23c/0x4f0 kernel/locking/lockdep.c:5843 [] __mutex_lock_common kernel/locking/mutex.c:646 [inline] [] __mutex_lock+0x164/0x1924 kernel/locking/mutex.c:821 [] _mutex_lock_killable+0x16/0x1e kernel/locking/mutex.c:892 [] pcpu_alloc_noprof+0xd5e/0x2472 mm/percpu.c:1788 [] percpu_ref_init+0x34/0x362 lib/percpu-refcount.c:72 [] blkg_alloc+0xcc/0x986 block/blk-cgroup.c:316 [] blkg_conf_prep+0x404/0xf44 block/blk-cgroup.c:879 [] tg_set_conf.isra.0+0x1e2/0x4a8 block/blk-throttle.c:1373 [] tg_set_conf_uint+0x28/0x36 block/blk-throttle.c:1411 [] cgroup_file_write+0x190/0x70e kernel/cgroup/cgroup.c:4412 [] kernfs_fop_write_iter+0x37c/0x530 fs/kernfs/file.c:345 [] new_sync_write fs/read_write.c:595 [inline] [] vfs_write+0x81a/0x1020 fs/read_write.c:687 [] ksys_write+0x126/0x244 fs/read_write.c:739 [] __do_sys_write fs/read_write.c:750 [inline] [] __se_sys_write fs/read_write.c:747 [inline] [] __riscv_sys_write+0x6e/0xa0 fs/read_write.c:747 [] syscall_handler+0x92/0x114 arch/riscv/include/asm/syscall.h:112 [] do_trap_ecall_u+0x4ca/0x658 arch/riscv/kernel/traps.c:341 [] handle_exception+0x168/0x174 arch/riscv/kernel/entry.S:237