Re: [PATCH] klist: Make it safe to use klists in atomic context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/28/18 08:37, Greg Kroah-Hartman wrote:
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 for the ack. I wasn't sure which maintainer to send this patch to since lib/klist.c is not mentioned in the MAINTAINERS file. Martin, are you OK with queuing this patch?

Thanks,

Bart.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux