android_kernel_sony_sdm845/drivers/target
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Bart Van Assche 1ef34b9063 scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock
commit 32e36bfbcf31452a854263e7c7f32fbefc4b44d8 upstream.

When using SCSI passthrough in combination with the iSCSI target driver
then cmd->t_state_lock may be obtained from interrupt context. Hence, all
code that obtains cmd->t_state_lock from thread context must disable
interrupts first. This patch avoids that lockdep reports the following:

WARNING: inconsistent lock state
4.18.0-dbg+ #1 Not tainted
--------------------------------
inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
iscsi_ttx/1800 [HC1[1]:SC0[2]:HE0:SE0] takes:
000000006e7b0ceb (&(&cmd->t_state_lock)->rlock){?...}, at: target_complete_cmd+0x47/0x2c0 [target_core_mod]
{HARDIRQ-ON-W} state was registered at:
 lock_acquire+0xd2/0x260
 _raw_spin_lock+0x32/0x50
 iscsit_close_connection+0x97e/0x1020 [iscsi_target_mod]
 iscsit_take_action_for_connection_exit+0x108/0x200 [iscsi_target_mod]
 iscsi_target_rx_thread+0x180/0x190 [iscsi_target_mod]
 kthread+0x1cf/0x1f0
 ret_from_fork+0x24/0x30
irq event stamp: 1281
hardirqs last  enabled at (1279): [<ffffffff970ade79>] __local_bh_enable_ip+0xa9/0x160
hardirqs last disabled at (1281): [<ffffffff97a008a5>] interrupt_entry+0xb5/0xd0
softirqs last  enabled at (1278): [<ffffffff977cd9a1>] lock_sock_nested+0x51/0xc0
softirqs last disabled at (1280): [<ffffffffc07a6e04>] ip6_finish_output2+0x124/0xe40 [ipv6]

other info that might help us debug this:
Possible unsafe locking scenario:

      CPU0
      ----
 lock(&(&cmd->t_state_lock)->rlock);
 <Interrupt>
   lock(&(&cmd->t_state_lock)->rlock);
2019-03-23 13:19:47 +01:00
..
iscsi scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock 2019-03-23 13:19:47 +01:00
loopback
sbp sbp-target: Fix second argument of percpu_ida_alloc() 2017-01-12 11:39:30 +01:00
tcm_fc target/tcm_fc: use CPU affinity for responses 2016-10-21 01:19:44 -07:00
Kconfig
Makefile
target_core_alua.c target: fix race during implicit transition work flushes 2017-12-20 10:07:26 +01:00
target_core_alua.h
target_core_configfs.c
target_core_device.c target: Fix NULL dereference during LUN lookup + active I/O shutdown 2017-03-15 10:02:46 +08:00
target_core_fabric_configfs.c target: Avoid mappedlun symlink creation during lun shutdown 2017-04-21 09:31:21 +02:00
target_core_fabric_lib.c
target_core_file.c tcm_fileio: Prevent information leak for short reads 2018-03-24 11:00:20 +01:00
target_core_file.h
target_core_hba.c
target_core_iblock.c
target_core_iblock.h
target_core_internal.h target: Fix kref->refcount underflow in transport_cmd_finish_abort 2017-06-29 13:00:30 +02:00
target_core_pr.c target:fix condition return in core_pr_dump_initiator_port() 2017-12-20 10:07:29 +01:00
target_core_pr.h
target_core_pscsi.c target/pscsi: Fix TYPE_TAPE + TYPE_MEDIMUM_CHANGER export 2017-03-26 13:05:57 +02:00
target_core_pscsi.h
target_core_rd.c
target_core_rd.h
target_core_sbc.c target: Fix compare_and_write_callback handling for non GOOD status 2017-05-20 14:28:34 +02:00
target_core_spc.c scsi: target: use consistent left-aligned ASCII INQUIRY data 2019-01-26 09:38:34 +01:00
target_core_stat.c
target_core_tmr.c target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK 2018-01-17 09:38:54 +01:00
target_core_tpg.c target: Fix node_acl demo-mode + uncached dynamic shutdown regression 2017-08-16 13:43:17 -07:00
target_core_transport.c scsi: target: fix __transport_register_session locking 2018-09-19 22:47:12 +02:00
target_core_ua.c
target_core_ua.h
target_core_user.c tcmu: Skip Data-Out blocks before gathering Data-In buffer for BIDI case 2017-04-21 09:31:18 +02:00
target_core_xcopy.c target: Use correct SCSI status during EXTENDED_COPY exception 2017-02-14 15:25:36 -08:00
target_core_xcopy.h