linux/drivers/target
Kiran Patil f2f7b09cce [SCSI] tcm_fc: Fixing reference counting problem which was causing ft_sess to be deleted.
Problem: After fixing the issue in TCM core w.r.t LUN Reset (Task
Management request) , ran into issue where during the completing of
this LUN Reset command, reference count of "ft_sess" drops to zero
which caused "sess" to be deleted.

Fix: As part of handling task management request (e.g. LUN Reset), TCM
core function "transport_generic_do_tmr" ends up calling ft_free_cmd
which in turn calls "ft_sess_put" (which drops session's reference
count by 1) and then frees ft_cmd. Then function
"transport_generic_do_tmr" calls "transport_cmd_check_stop" which in
turn also calls ft_free_cmd (which calls ft_sess_put - which drops
reference count of sess by 1, hence reference count of sess becomes
zero and session gets deleted). Fix is to just send response in case
of tmr from function "ft_queue_resp_code" and not delete "ft_cmd"
(means don't call ft_free_cmd). Earlier code was to send the response
code and also free ft_cmd. ft_free_cmd will be freed later after
sending response code as a result of "transport_cmd_check_stop" (which
calls ft_release_cmd -> ft_free_cmd) being called from
"transport_generic_do_tmr" after sening TMR response code.

Notes/Dependencies: This bug was found after fixing NULL pointer
access issue in TCM core (in LUN Reset codepath)

Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2011-06-29 16:32:31 -05:00
..
loopback target: Fix incorrect strlen() NULL terminator checks 2011-06-24 00:08:11 +00:00
tcm_fc [SCSI] tcm_fc: Fixing reference counting problem which was causing ft_sess to be deleted. 2011-06-29 16:32:31 -05:00
Kconfig [SCSI] tcm_fc: Adding FC_FC4 provider (tcm_fc) for FCoE target (TCM - target core) support 2011-05-17 10:52:46 +04:00
Makefile [SCSI] tcm_fc: Adding FC_FC4 provider (tcm_fc) for FCoE target (TCM - target core) support 2011-05-17 10:52:46 +04:00
target_core_alua.c Merge branch 'master' into for-next 2011-04-26 10:22:59 +02:00
target_core_alua.h
target_core_cdb.c [SCSI] target: Fix volume size misreporting for volumes > 2TB 2011-03-14 18:31:08 -05:00
target_core_configfs.c target: Fix incorrect strlen() NULL terminator checks 2011-06-24 00:08:11 +00:00
target_core_device.c target: Fix incorrect strlen() NULL terminator checks 2011-06-24 00:08:11 +00:00
target_core_fabric_configfs.c [SCSI] target: add initial statistics 2011-03-23 11:36:50 -05:00
target_core_fabric_lib.c Fix common misspellings 2011-03-31 11:26:23 -03:00
target_core_file.c Fix common misspellings 2011-03-31 11:26:23 -03:00
target_core_file.h
target_core_hba.c [SCSI] target: Remove unnecessary hba_dev_list walk and se_clear_dev_ports legacy code 2011-03-23 11:36:27 -05:00
target_core_hba.h
target_core_iblock.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2011-03-25 21:06:13 -07:00
target_core_iblock.h
target_core_pr.c target: Fix incorrect strlen() NULL terminator checks 2011-06-24 00:08:11 +00:00
target_core_pr.h
target_core_pscsi.c [SCSI] target: Convert TASK_ATTR to scsi_tcq.h definitions 2011-05-24 13:03:56 -04:00
target_core_pscsi.h
target_core_rd.c [SCSI] target: Convert rd_build_device_space() to use errno 2011-03-23 11:36:32 -05:00
target_core_rd.h [SCSI] target: Minor sparse warning fixes and annotations 2011-03-23 11:36:29 -05:00
target_core_scdb.c
target_core_scdb.h
target_core_stat.c [SCSI] target: add initial statistics 2011-03-23 11:36:50 -05:00
target_core_stat.h [SCSI] target: add initial statistics 2011-03-23 11:36:50 -05:00
target_core_tmr.c target: Fix transport_get_lun_for_tmr failure cases 2011-06-23 23:59:45 +00:00
target_core_tpg.c drivers: remove extraneous includes of smp_lock.h 2011-03-02 00:02:40 +01:00
target_core_transport.c target: Convert transport_deregister_session_configfs nacl_sess_lock to save irq state 2011-06-23 23:59:45 +00:00
target_core_ua.c Fix common misspellings 2011-03-31 11:26:23 -03:00
target_core_ua.h