linux-sg2042/drivers/target
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 iscsi-target: Fix potential deadlock on lock taken in timer 2012-11-07 20:12:07 -08:00
loopback target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
sbp sbp-target: fix return value check in sbp_register_configfs() 2012-09-22 16:29:52 -07:00
tcm_fc tcm_fc: move the dereference below the NULL test 2012-09-17 18:04:09 -07:00
Kconfig sbp-target: Initial merge of firewire/ieee-1394 target mode support 2012-05-09 15:25:17 -07:00
Makefile target: move code for CDB emulation 2012-07-16 17:27:45 -07:00
target_core_alua.c target: Fix incorrect inversion of TPGS_EXPLICT_ALUA check 2012-11-06 20:55:46 -08:00
target_core_alua.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_configfs.c target: simplify alua support 2012-11-06 20:55:45 -08:00
target_core_device.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_fabric_configfs.c target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_fabric_lib.c target: Fix minor spelling typos in drivers/target 2012-09-17 17:13:31 -07:00
target_core_file.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_file.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_hba.c target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_iblock.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_iblock.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_internal.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_pr.c target: Fix exception path pr_reg put regression for PR RELEASE 2012-11-07 20:12:06 -08:00
target_core_pr.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_pscsi.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_pscsi.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_rd.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_rd.h target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_sbc.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_spc.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_stat.c target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_tmr.c target: kill struct se_subsystem_dev 2012-11-06 20:55:43 -08:00
target_core_tpg.c target: Fix minor spelling typos in drivers/target 2012-09-17 17:13:31 -07:00
target_core_transport.c target: Fix possible TFO->write_pending() sense_reason_t silent WRITE corruption 2012-11-07 20:10:56 -08:00
target_core_ua.c target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00
target_core_ua.h target: pass sense_reason as a return value 2012-11-06 20:55:46 -08:00