lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202511191340.643afc3a-lkp@intel.com>
Date: Wed, 19 Nov 2025 14:55:52 +0800
From: kernel test robot <oliver.sang@...el.com>
To: Yu Kuai <yukuai@...as.com>
CC: <oe-lkp@...ts.linux.dev>, <lkp@...el.com>, <linux-block@...r.kernel.org>,
	<axboe@...nel.dk>, <linux-kernel@...r.kernel.org>, <tj@...nel.org>,
	<nilay@...ux.ibm.com>, <ming.lei@...hat.com>, <yukuai@...as.com>,
	<oliver.sang@...el.com>
Subject: Re: [PATCH RESEND 2/5] blk-wbt: fix incorrect lock order for
 rq_qos_mutex and freeze queue



Hello,

kernel test robot noticed "WARNING:possible_circular_locking_dependency_detected" on:

commit: 9b76049c7ab17a3352a58ee216f444769e216c5c ("[PATCH RESEND 2/5] blk-wbt: fix incorrect lock order for rq_qos_mutex and freeze queue")
url: https://github.com/intel-lab-lkp/linux/commits/Yu-Kuai/block-blk-rq-qos-add-a-new-helper-rq_qos_add_freezed/20251116-121353
base: https://git.kernel.org/cgit/linux/kernel/git/axboe/linux.git for-next
patch link: https://lore.kernel.org/all/20251116041024.120500-3-yukuai@fnnas.com/
patch subject: [PATCH RESEND 2/5] blk-wbt: fix incorrect lock order for rq_qos_mutex and freeze queue

in testcase: boot

config: x86_64-rhel-9.4-kselftests
compiler: gcc-14
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 32G

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@...el.com>
| Closes: https://lore.kernel.org/oe-lkp/202511191340.643afc3a-lkp@intel.com


[   36.217408][  T108] WARNING: possible circular locking dependency detected
[   36.218277][  T108] 6.18.0-rc5-00238-g9b76049c7ab1 #1 Not tainted
[   36.219067][  T108] ------------------------------------------------------
[   36.219956][  T108] udevd/108 is trying to acquire lock:
[   36.220622][  T108] ffff88813b4b6a40 (&q->debugfs_mutex){+.+.}-{4:4}, at: rq_qos_add_freezed (block/blk-rq-qos.c:345)
[   36.221938][  T108]
[   36.221938][  T108] but task is already holding lock:
[   36.222851][  T108] ffff88813b4b63e0 (&q->rq_qos_mutex){+.+.}-{4:4}, at: wbt_init (block/blk-wbt.c:929)
[   36.223964][  T108]
[   36.223964][  T108] which lock already depends on the new lock.
[   36.223964][  T108]
[   36.225282][  T108]
[   36.225282][  T108] the existing dependency chain (in reverse order) is:
[   36.226380][  T108]
[   36.226380][  T108] -> #4 (&q->rq_qos_mutex){+.+.}-{4:4}:
[   36.228833][  T108]        __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[   36.230959][  T108]        lock_acquire (include/linux/preempt.h:471 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) kernel/locking/lockdep.c:5831 (discriminator 2))
[   36.233086][  T108]        __mutex_lock (arch/x86/include/asm/jump_label.h:36 include/trace/events/lock.h:95 kernel/locking/mutex.c:600 kernel/locking/mutex.c:760)
[   36.234852][  T108]        wbt_init (block/blk-wbt.c:929)
[   36.236509][  T108]        wbt_enable_default (include/linux/blk-mq.h:960 block/blk-wbt.c:731)
[   36.238663][  T108]        blk_register_queue (block/blk-sysfs.c:948)
[   36.240650][  T108]        __add_disk (block/genhd.c:528)
[   36.242626][  T108]        add_disk_fwnode (block/genhd.c:598)
[   36.244660][  T108] sr_probe (drivers/scsi/sr.c:703) sr_mod
[   36.246799][  T108]        really_probe (drivers/base/dd.c:581 drivers/base/dd.c:659)
[   36.248845][  T108]        __driver_probe_device (drivers/base/dd.c:801)
[   36.250799][  T108]        driver_probe_device (drivers/base/dd.c:831)
[   36.252778][  T108]        __driver_attach (drivers/base/dd.c:1218)
[   36.254752][  T108]        bus_for_each_dev (drivers/base/bus.c:369)
[   36.256776][  T108]        bus_add_driver (drivers/base/bus.c:678)
[   36.258650][  T108]        driver_register (drivers/base/driver.c:249)
[   36.261124][  T108] init_sr (drivers/scsi/sr.c:152) sr_mod
[   36.262938][  T108]        do_one_initcall (init/main.c:1283)
[   36.264802][  T108]        do_init_module (kernel/module/main.c:3039)
[   36.266560][  T108]        load_module (kernel/module/main.c:3509)
[   36.268367][  T108]        init_module_from_file (kernel/module/main.c:3701)
[   36.270150][  T108]        idempotent_init_module (kernel/module/main.c:3713)
[   36.272050][  T108]        __x64_sys_finit_module (include/linux/file.h:62 (discriminator 1) include/linux/file.h:83 (discriminator 1) kernel/module/main.c:3736 (discriminator 1) kernel/module/main.c:3723 (discriminator 1) kernel/module/main.c:3723 (discriminator 1))
[   36.273921][  T108]        do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
[   36.275672][  T108]        entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
[   36.277584][  T108]
[   36.277584][  T108] -> #3 (&q->q_usage_counter(io)){++++}-{0:0}:
[   36.280765][  T108]        __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[   36.282560][  T108]        lock_acquire (include/linux/preempt.h:471 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) kernel/locking/lockdep.c:5831 (discriminator 2))
[   36.284435][  T108]        blk_alloc_queue (block/blk-core.c:462 (discriminator 1))
[   36.286153][  T108]        blk_mq_alloc_queue (block/blk-mq.c:4405)
[   36.287937][  T108]        scsi_alloc_sdev (drivers/scsi/scsi_scan.c:339)
[   36.289536][  T108]        scsi_probe_and_add_lun (drivers/scsi/scsi_scan.c:1211)
[   36.291280][  T108]        __scsi_add_device (drivers/scsi/scsi_scan.c:1625)
[   36.292952][  T108] ata_scsi_scan_host (drivers/ata/libata-scsi.c:4577 (discriminator 1)) libata
[   36.295269][  T108]        async_run_entry_fn (arch/x86/include/asm/jump_label.h:36 kernel/async.c:131)
[   36.297162][  T108]        process_one_work (arch/x86/include/asm/jump_label.h:36 include/trace/events/workqueue.h:110 kernel/workqueue.c:3268)
[   36.299000][  T108]        worker_thread (kernel/workqueue.c:3340 (discriminator 2) kernel/workqueue.c:3427 (discriminator 2))
[   36.300695][  T108]        kthread (kernel/kthread.c:463)
[   36.302155][  T108]        ret_from_fork (arch/x86/kernel/process.c:164)
[   36.303743][  T108]        ret_from_fork_asm (arch/x86/entry/entry_64.S:255)
[   36.305346][  T108]
[   36.305346][  T108] -> #2 (fs_reclaim){+.+.}-{0:0}:
[   36.307985][  T108]        __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[   36.309621][  T108]        lock_acquire (include/linux/preempt.h:471 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) kernel/locking/lockdep.c:5831 (discriminator 2))
[   36.311256][  T108]        fs_reclaim_acquire (mm/page_alloc.c:4270 mm/page_alloc.c:4283)
[   36.312913][  T108]        kmem_cache_alloc_lru_noprof (include/linux/sched/mm.h:319 mm/slub.c:4925 mm/slub.c:5260 mm/slub.c:5303)
[   36.314550][  T108]        __d_alloc (fs/dcache.c:1692)
[   36.316022][  T108]        d_alloc_parallel (fs/dcache.c:2549)
[   36.317503][  T108]        __lookup_slow (fs/namei.c:1801)
[   36.319003][  T108]        simple_start_creating (fs/libfs.c:2304 (discriminator 1))
[   36.320529][  T108]        debugfs_start_creating+0x4f/0xe0
[   36.322219][  T108]        debugfs_create_dir (fs/debugfs/inode.c:374 (discriminator 1) fs/debugfs/inode.c:581 (discriminator 1))
[   36.323776][  T108]        pinctrl_init (drivers/pinctrl/core.c:2028 (discriminator 1) drivers/pinctrl/core.c:2420 (discriminator 1))
[   36.325323][  T108]        do_one_initcall (init/main.c:1283)
[   36.326866][  T108]        do_initcalls (init/main.c:1344 (discriminator 3) init/main.c:1361 (discriminator 3))
[   36.328322][  T108]        kernel_init_freeable (init/main.c:1597)
[   36.329944][  T108]        kernel_init (init/main.c:1485)
[   36.331399][  T108]        ret_from_fork (arch/x86/kernel/process.c:164)
[   36.332850][  T108]        ret_from_fork_asm (arch/x86/entry/entry_64.S:255)
[   36.334399][  T108]
[   36.334399][  T108] -> #1 (&sb->s_type->i_mutex_key#3){+.+.}-{4:4}:
[   36.337887][  T108]        __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[   36.339409][  T108]        lock_acquire (include/linux/preempt.h:471 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) kernel/locking/lockdep.c:5831 (discriminator 2))
[   36.341061][  T108]        down_write (arch/x86/include/asm/preempt.h:80 (discriminator 10) kernel/locking/rwsem.c:1315 (discriminator 10) kernel/locking/rwsem.c:1326 (discriminator 10) kernel/locking/rwsem.c:1591 (discriminator 10))
[   36.342598][  T108]        simple_start_creating (fs/libfs.c:2299)
[   36.344192][  T108]        debugfs_start_creating+0x4f/0xe0
[   36.345959][  T108]        debugfs_create_dir (fs/debugfs/inode.c:374 (discriminator 1) fs/debugfs/inode.c:581 (discriminator 1))
[   36.347535][  T108]        blk_register_queue (block/blk-sysfs.c:928 (discriminator 1))
[   36.349145][  T108]        __add_disk (block/genhd.c:528)
[   36.350605][  T108]        add_disk_fwnode (block/genhd.c:598)
[   36.352129][  T108] sr_probe (drivers/scsi/sr.c:703) sr_mod
[   36.353727][  T108]        really_probe (drivers/base/dd.c:581 drivers/base/dd.c:659)
[   36.355225][  T108]        __driver_probe_device (drivers/base/dd.c:801)
[   36.356818][  T108]        driver_probe_device (drivers/base/dd.c:831)
[   36.358406][  T108]        __driver_attach (drivers/base/dd.c:1218)
[   36.359984][  T108]        bus_for_each_dev (drivers/base/bus.c:369)
[   36.361462][  T108]        bus_add_driver (drivers/base/bus.c:678)
[   36.362950][  T108]        driver_register (drivers/base/driver.c:249)
[   36.364384][  T108] init_sr (drivers/scsi/sr.c:152) sr_mod
[   36.365900][  T108]        do_one_initcall (init/main.c:1283)
[   36.367417][  T108]        do_init_module (kernel/module/main.c:3039)
[   36.368926][  T108]        load_module (kernel/module/main.c:3509)
[   36.370434][  T108]        init_module_from_file (kernel/module/main.c:3701)
[   36.372090][  T108]        idempotent_init_module (kernel/module/main.c:3713)
[   36.373729][  T108]        __x64_sys_finit_module (include/linux/file.h:62 (discriminator 1) include/linux/file.h:83 (discriminator 1) kernel/module/main.c:3736 (discriminator 1) kernel/module/main.c:3723 (discriminator 1) kernel/module/main.c:3723 (discriminator 1))
[   36.375279][  T108]        do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
[   36.376796][  T108]        entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
[   36.378301][  T108]
[   36.378301][  T108] -> #0 (&q->debugfs_mutex){+.+.}-{4:4}:
[   36.381043][  T108]        check_prev_add (kernel/locking/lockdep.c:3166 (discriminator 2))
[   36.382551][  T108]        validate_chain (kernel/locking/lockdep.c:3285 kernel/locking/lockdep.c:3908)
[   36.384101][  T108]        __lock_acquire (kernel/locking/lockdep.c:5237 (discriminator 1))
[   36.385608][  T108]        lock_acquire (include/linux/preempt.h:471 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) include/trace/events/lock.h:24 (discriminator 2) kernel/locking/lockdep.c:5831 (discriminator 2))
[   36.387119][  T108]        __mutex_lock (arch/x86/include/asm/jump_label.h:36 include/trace/events/lock.h:95 kernel/locking/mutex.c:600 kernel/locking/mutex.c:760)
[   36.388585][  T108]        rq_qos_add_freezed (block/blk-rq-qos.c:345)
[   36.390240][  T108]        wbt_init (block/blk-wbt.c:930)
[   36.391782][  T108]        wbt_enable_default (include/linux/blk-mq.h:960 block/blk-wbt.c:731)
[   36.393333][  T108]        blk_register_queue (block/blk-sysfs.c:948)
[   36.394867][  T108]        __add_disk (block/genhd.c:528)
[   36.396410][  T108]        add_disk_fwnode (block/genhd.c:598)
[   36.398009][  T108] sr_probe (drivers/scsi/sr.c:703) sr_mod
[   36.399514][  T108]        really_probe (drivers/base/dd.c:581 drivers/base/dd.c:659)
[   36.401035][  T108]        __driver_probe_device (drivers/base/dd.c:801)
[   36.402511][  T108]        driver_probe_device (drivers/base/dd.c:831)
[   36.403990][  T108]        __driver_attach (drivers/base/dd.c:1218)
[   36.405471][  T108]        bus_for_each_dev (drivers/base/bus.c:369)
[   36.407062][  T108]        bus_add_driver (drivers/base/bus.c:678)
[   36.408549][  T108]        driver_register (drivers/base/driver.c:249)
[   36.410081][  T108] init_sr (drivers/scsi/sr.c:152) sr_mod
[   36.411625][  T108]        do_one_initcall (init/main.c:1283)
[   36.413166][  T108]        do_init_module (kernel/module/main.c:3039)
[   36.414682][  T108]        load_module (kernel/module/main.c:3509)
[   36.416196][  T108]        init_module_from_file (kernel/module/main.c:3701)
[   36.417822][  T108]        idempotent_init_module (kernel/module/main.c:3713)
[   36.419453][  T108]        __x64_sys_finit_module (include/linux/file.h:62 (discriminator 1) include/linux/file.h:83 (discriminator 1) kernel/module/main.c:3736 (discriminator 1) kernel/module/main.c:3723 (discriminator 1) kernel/module/main.c:3723 (discriminator 1))
[   36.421144][  T108]        do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1))
[   36.422741][  T108]        entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
[   36.424468][  T108]
[   36.424468][  T108] other info that might help us debug this:
[   36.424468][  T108]
[   36.428405][  T108] Chain exists of:
[   36.428405][  T108]   &q->debugfs_mutex --> &q->q_usage_counter(io) --> &q->rq_qos_mutex
[   36.428405][  T108]
[   36.432967][  T108]  Possible unsafe locking scenario:
[   36.432967][  T108]
[   36.435485][  T108]        CPU0                    CPU1
[   36.437074][  T108]        ----                    ----
[   36.438592][  T108]   lock(&q->rq_qos_mutex);
[   36.440094][  T108]                                lock(&q->q_usage_counter(io));
[   36.441920][  T108]                                lock(&q->rq_qos_mutex);
[   36.443715][  T108]   lock(&q->debugfs_mutex);
[   36.445174][  T108]
[   36.445174][  T108]  *** DEADLOCK ***
[   36.445174][  T108]
[   36.448803][  T108] 6 locks held by udevd/108:


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20251119/202511191340.643afc3a-lkp@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ