From d6a342b373eb7954a62dddc751d96e7874e31da0 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 13 Jul 2021 14:03:15 +0000 Subject: [PATCH] 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: [] isert_wait_for_portal_release+0x6d/0xc0 [isert_scst] [] isert_close_all_portals+0x3d/0x50 [isert_scst] [] target_del_all+0x9a/0x2b0 [iscsi_scst] [] iscsi_release+0x48/0xe0 [iscsi_scst] [] __fput+0xf8/0x220 [] fput+0x25/0x30 [] filp_close+0x60/0x90 [] put_files_struct+0x7f/0xf0 [] exit_files+0x53/0x70 [] do_exit+0x18d/0x860 [] do_group_exit+0x58/0xd0 [] get_signal_to_deliver+0x1f6/0x470 [] do_signal+0x75/0x8d0 [] do_notify_resume+0x90/0xc0 [] int_signal+0x12/0x17 Fixes: 5d808c54 ("isert-scst: Introduce the function isert_setup_id()") Signed-off-by: Chesnokov Gleb [ bvanassche: added call stack ] git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9487 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- iscsi-scst/kernel/isert-scst/iser_rdma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/iscsi-scst/kernel/isert-scst/iser_rdma.c b/iscsi-scst/kernel/isert-scst/iser_rdma.c index 438059a4c..487703e8a 100644 --- a/iscsi-scst/kernel/isert-scst/iser_rdma.c +++ b/iscsi-scst/kernel/isert-scst/iser_rdma.c @@ -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: