Spdk/lib/iscsi
Shuhei Matsumoto 22adcd1487 lib/iscsi: Fix orphaned PDUs when freeing PDUs and tasks for LUN hotplug
In _iscsi_conn_free_tasks(), we had parsed conn->write_pdu_list
and then parsed conn->queued_datain_tasks.  However when we parsed
conn->write_pdu_list, if there was any task in conn->queued_datain_tasks,
some PDUs were inserted conn->write_pdu_list.  Hence after parsing
conn->write_pdu_list, new PDUs were in conn->write_pdu_list as orphan.
Then orphaned PDUs were freed later but LUN was already freed and
critical failure occurred.

This patch swaps the order of conn->queued_datain_tasks and
conn->write_pdu_list, and add comment to explain the change.

Additionally, this patch adds unit test which fails if it runs
without this fix.

Fixes issue #1030.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Icb0ffbbbac70792a62939dc55a69df05d2ab9128
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475453
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-12-05 12:21:09 +00:00
..
conn.c lib/iscsi: Fix orphaned PDUs when freeing PDUs and tasks for LUN hotplug 2019-12-05 12:21:09 +00:00
conn.h iscsi: change timeout from int to uint64_t 2019-11-27 07:09:31 +00:00
init_grp.c rpc: Rename add_initiator_group to iscsi_create_initiator_group 2019-09-24 16:40:01 +00:00
init_grp.h iscsi: Use not malloc'ed but fixed size string for initiator address 2019-07-01 05:03:07 +00:00
iscsi_rpc.c rpc: Rename delete_target_node to iscsi_delete_target_node 2019-10-01 14:00:30 +00:00
iscsi_subsystem.c rpc: Rename add_iscsi_auth_group to iscsi_create_auth_group 2019-09-24 14:46:27 +00:00
iscsi.c lib/iscsi: Fix double free of primary task when write I/O is split 2019-12-05 12:21:09 +00:00
iscsi.h lib/iscsi: Make spdk_del_transfer_task() return success/failure 2019-11-21 08:01:29 +00:00
Makefile mk: add a lib deps file. 2019-08-23 17:48:35 +00:00
md5.c astyle: enforce braces around single-line statements 2017-12-11 11:19:32 -05:00
md5.h include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
param.c iscsi: Remove the prefix spdk_ from names of private functions 2019-04-01 00:52:56 +00:00
param.h lib/iscsi: Move function declaration to param.h to match function body 2019-11-19 09:10:14 +00:00
portal_grp.c lib/iscsi: Add iscsi_portal_group_set_auth for per portal group CHAP authentication 2019-09-27 15:24:14 +00:00
portal_grp.h lib/iscsi: Add iscsi_portal_group_set_auth for per portal group CHAP authentication 2019-09-27 15:24:14 +00:00
task.c iscsi: put data_cnt_in operation in iscsi task get and free 2019-12-04 15:34:54 +00:00
task.h lib/iscsi: Fix double free of primary task when write I/O is split 2019-12-05 12:21:09 +00:00
tgt_node.c lib/iscsi: Request logout to asynchronously to initiator 2019-10-09 02:45:17 +00:00
tgt_node.h rpc: Rename delete_pg_ig_maps to iscsi_target_node_remove_pg_ig_maps 2019-09-18 18:09:13 +00:00