linux/drivers/target/iscsi
Roland Dreier 998866b074 iscsi-target: Fix potential deadlock on lock taken in timer
We need to disable BHs when taking sess_idr_lock because the
iscsit_handle_time2retain_timeout() timer function takes
se_tpg->session_lock, and iscsit_close_session() nests sess_idr_lock
inside se_tpg->session_lock.  So if the timer can run inside
sess_idr_lock, we have a potential AB-BA deadlock.

Fix this by disabling BHs when taking sess_idr_lock.  This was found
because of a lockdep warning, but it looks like a real (if highly
theoretical) deadlock.  In any case avoiding lockdep spew so that we can
find other issues is a worthy cause.

Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2012-11-07 20:12:07 -08:00
..
iscsi_target_auth.c iscsi-target: fix chap identifier simple_strtoul usage 2011-12-14 11:28:09 +00:00
iscsi_target_auth.h
iscsi_target_configfs.c iscsit: use the itt_t abstract type 2012-10-03 14:21:50 -07:00
iscsi_target_configfs.h
iscsi_target_core.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
iscsi_target_datain_values.c target/iscsi: Eliminate iscsi_cmd.data_length 2012-04-14 17:40:38 -07:00
iscsi_target_datain_values.h
iscsi_target_device.c target/iscsi: Remove unneeded wrapper functions 2012-02-25 14:37:47 -08:00
iscsi_target_device.h target/iscsi: Remove unneeded wrapper functions 2012-02-25 14:37:47 -08:00
iscsi_target_erl0.c iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_erl0.h
iscsi_target_erl1.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
iscsi_target_erl1.h iscsit: use the itt_t abstract type 2012-10-03 14:21:50 -07:00
iscsi_target_erl2.c iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_erl2.h iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_login.c iscsi-target: Fix potential deadlock on lock taken in timer 2012-11-07 20:12:07 -08:00
iscsi_target_login.h
iscsi_target_nego.c iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_nego.h
iscsi_target_nodeattrib.c iscsi-target: remove improper externs 2012-03-17 18:07:04 -07:00
iscsi_target_nodeattrib.h
iscsi_target_parameters.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2012-10-10 19:52:19 +09:00
iscsi_target_parameters.h iscsi-target: Enable MaxXmitDataSegmentLength operation in login path 2012-10-02 13:17:31 -07:00
iscsi_target_seq_pdu_list.c iscsi-target: Change iscsi_target_seq_pdu_list.c to honor MaxXmitDataSegmentLength 2012-10-02 13:17:33 -07:00
iscsi_target_seq_pdu_list.h target/iscsi: Fold _decide_list_to_build into _build_pdu_and_seq_lists 2012-04-14 17:40:38 -07:00
iscsi_target_stat.c target: remove useless casts 2011-12-14 11:28:07 +00:00
iscsi_target_stat.h
iscsi_target_tmr.c iscsit: proper endianess conversions 2012-10-03 14:39:22 -07:00
iscsi_target_tmr.h
iscsi_target_tpg.c iscsi-target: Add explicit set of cache_dynamic_acls=1 for TPG demo-mode 2012-10-02 13:17:34 -07:00
iscsi_target_tpg.h
iscsi_target_tq.c iscsi-target: Use list_first_entry() where appropriate 2012-11-06 20:55:45 -08:00
iscsi_target_tq.h iscsit: mark various functions static 2012-10-02 14:41:59 -07:00
iscsi_target_util.c iscsi-target: Use list_first_entry() where appropriate 2012-11-06 20:55:45 -08:00
iscsi_target_util.h iscsi-target: Fix missed wakeup race in TX thread 2012-11-01 00:38:44 -07:00
iscsi_target.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
iscsi_target.h iscsit: mark various functions static 2012-10-02 14:41:59 -07:00
Kconfig target: iscsi_target depends on NET 2011-07-28 20:16:18 +00:00
Makefile