iscsi-target: Fix iscsit_start_kthreads failure OOPs
[firefly-linux-kernel-4.4.55.git] / drivers / target / iscsi / iscsi_target_tpg.c
index 5e3295fe404d7cc93aae6354f2578bcbca55ee23..968068ffcb1c87a7ce7d218f8faf0a900dbc517b 100644 (file)
@@ -18,7 +18,6 @@
 
 #include <target/target_core_base.h>
 #include <target/target_core_fabric.h>
-#include <target/target_core_configfs.h>
 
 #include <target/iscsi/iscsi_target_core.h>
 #include "iscsi_target_erl0.h"
@@ -67,9 +66,12 @@ int iscsit_load_discovery_tpg(void)
                pr_err("Unable to allocate struct iscsi_portal_group\n");
                return -1;
        }
-
-       ret = core_tpg_register(&iscsi_ops, NULL, &tpg->tpg_se_tpg,
-                               tpg, TRANSPORT_TPG_TYPE_DISCOVERY);
+       /*
+        * Save iscsi_ops pointer for special case discovery TPG that
+        * doesn't exist as se_wwn->wwn_group within configfs.
+        */
+       tpg->tpg_se_tpg.se_tpg_tfo = &iscsi_ops;
+       ret = core_tpg_register(NULL, &tpg->tpg_se_tpg, -1);
        if (ret < 0) {
                kfree(tpg);
                return -1;
@@ -280,8 +282,6 @@ int iscsit_tpg_del_portal_group(
                return -EPERM;
        }
 
-       core_tpg_clear_object_luns(&tpg->tpg_se_tpg);
-
        if (tpg->param_list) {
                iscsi_release_param_list(tpg->param_list);
                tpg->param_list = NULL;