On Fri, Jun 22, 2018 at 02:54:49PM -0700, Bart Van Assche wrote: > In the scsi_transport_srp implementation it cannot be avoided to > iterate over a klist from atomic context when using the legacy > block layer instead of blk-mq. Hence this patch that makes it safe > to use klists in atomic context. This patch avoids that lockdep > reports the following: > > WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected > Possible interrupt unsafe locking scenario: > > CPU0 CPU1 > ---- ---- > lock(&(&k->k_lock)->rlock); > local_irq_disable(); > lock(&(&q->__queue_lock)->rlock); > lock(&(&k->k_lock)->rlock); > <Interrupt> > lock(&(&q->__queue_lock)->rlock); > > stack backtrace: > Workqueue: kblockd blk_timeout_work > Call Trace: > dump_stack+0xa4/0xf5 > check_usage+0x6e6/0x700 > __lock_acquire+0x185d/0x1b50 > lock_acquire+0xd2/0x260 > _raw_spin_lock+0x32/0x50 > klist_next+0x47/0x190 > device_for_each_child+0x8e/0x100 > srp_timed_out+0xaf/0x1d0 [scsi_transport_srp] > scsi_times_out+0xd4/0x410 [scsi_mod] > blk_rq_timed_out+0x36/0x70 > blk_timeout_work+0x1b5/0x220 > process_one_work+0x4fe/0xad0 > worker_thread+0x63/0x5a0 > kthread+0x1c1/0x1e0 > ret_from_fork+0x24/0x30 > > See also commit c9ddf73476ff ("scsi: scsi_transport_srp: Fix shost > to rport translation"). > > Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxx> > Cc: Martin K. Petersen <martin.petersen@xxxxxxxxxx> > Cc: James Bottomley <jejb@xxxxxxxxxxxxxxxxxx> > --- > lib/klist.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) No objection from me: Acked-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> This should probably go through the scsi tree, right? thanks, greg k-h