isert-scst: Call isert_portal_list_add() after portal initialization

This patch fixes the following hang:

SysRq : Show Blocked State
  task                        PC stack   pid father
iscsi-scstd   D 0000000000000007     0  7981      1 0x00000084
 ffff88007ad87ae8 0000000000000046 0000000000000000 0000000000000010
 0000000000000246 ffff88007ad87a48 0000002483e71851 0000000000000246
 00000000fffdd081 0000000000000c83 ffff880078e8b068 ffff88007ad87fd8
Call Trace:
 [<ffffffffa050667d>] isert_wait_for_portal_release+0x6d/0xc0 [isert_scst]
 [<ffffffffa04fd5cd>] isert_close_all_portals+0x3d/0x50 [isert_scst]
 [<ffffffffa04deeca>] target_del_all+0x9a/0x2b0 [iscsi_scst]
 [<ffffffffa04d7688>] iscsi_release+0x48/0xe0 [iscsi_scst]
 [<ffffffff811a46c8>] __fput+0xf8/0x220
 [<ffffffff811a4815>] fput+0x25/0x30
 [<ffffffff8119f8d0>] filp_close+0x60/0x90
 [<ffffffff81084ccf>] put_files_struct+0x7f/0xf0
 [<ffffffff81084d93>] exit_files+0x53/0x70
 [<ffffffff81086ecd>] do_exit+0x18d/0x860
 [<ffffffff810875f8>] do_group_exit+0x58/0xd0
 [<ffffffff8109d576>] get_signal_to_deliver+0x1f6/0x470
 [<ffffffff8100a375>] do_signal+0x75/0x8d0
 [<ffffffff8100ac60>] do_notify_resume+0x90/0xc0
 [<ffffffff8156672f>] int_signal+0x12/0x17

Fixes: 5d808c54 ("isert-scst: Introduce the function isert_setup_id()")
Signed-off-by: Chesnokov Gleb <Chesnokov.G@raidix.com>
[ bvanassche: added call stack ]


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9487 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2021-07-13 14:03:15 +00:00
parent 53559bae31
commit d6a342b373

View File

@@ -1892,8 +1892,6 @@ struct isert_portal *isert_portal_create(struct sockaddr *sa, size_t addr_len)
INIT_WORK(&portal->work, isert_portal_reinit_id_work);
INIT_LIST_HEAD(&portal->conn_list);
isert_portal_list_add(portal);
memcpy(&portal->addr, sa, addr_len);
cm_id = isert_setup_id(portal);
@@ -1904,6 +1902,7 @@ struct isert_portal *isert_portal_create(struct sockaddr *sa, size_t addr_len)
}
portal->cm_id = cm_id;
isert_portal_list_add(portal);
PRINT_INFO("Created iser portal cm_id:%p", cm_id);
out: