Instead of allocing these dynamically, include them in their parent
structures.

Signed-off-by: Andy Grover <agro...@redhat.com>
---
 drivers/target/target_core_device.c |  6 -----
 drivers/target/target_core_tpg.c    | 44 +++----------------------------------
 include/target/target_core_base.h   |  4 ++--
 3 files changed, 5 insertions(+), 49 deletions(-)

diff --git a/drivers/target/target_core_device.c 
b/drivers/target/target_core_device.c
index afa7f6b..173c4f0 100644
--- a/drivers/target/target_core_device.c
+++ b/drivers/target/target_core_device.c
@@ -242,9 +242,6 @@ int core_free_device_list_for_node(
        struct se_lun *lun;
        u32 i;
 
-       if (!nacl->device_list)
-               return 0;
-
        spin_lock_irq(&nacl->device_list_lock);
        for (i = 0; i < TRANSPORT_MAX_LUNS_PER_TPG; i++) {
                deve = nacl->device_list[i];
@@ -267,9 +264,6 @@ int core_free_device_list_for_node(
        }
        spin_unlock_irq(&nacl->device_list_lock);
 
-       kfree(nacl->device_list);
-       nacl->device_list = NULL;
-
        return 0;
 }
 
diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c
index 522b325..38a6d1b 100644
--- a/drivers/target/target_core_tpg.c
+++ b/drivers/target/target_core_tpg.c
@@ -189,23 +189,6 @@ static int core_set_queue_depth_for_node(
        return 0;
 }
 
-/*      core_create_device_list_for_node():
- *
- *
- */
-static int core_create_device_list_for_node(struct se_node_acl *nacl)
-{
-       nacl->device_list = kzalloc(TRANSPORT_MAX_LUNS_PER_TPG * sizeof(void*),
-                                   GFP_KERNEL);
-       if (!nacl->device_list) {
-               pr_err("Unable to allocate memory for"
-                       " struct se_node_acl->device_list\n");
-               return -ENOMEM;
-       }
-
-       return 0;
-}
-
 /*     core_tpg_check_initiator_node_acl()
  *
  *
@@ -242,11 +225,6 @@ struct se_node_acl *core_tpg_check_initiator_node_acl(
 
        tpg->se_tpg_tfo->set_default_node_attributes(acl);
 
-       if (core_create_device_list_for_node(acl) < 0) {
-               tpg->se_tpg_tfo->tpg_release_fabric_acl(tpg, acl);
-               return NULL;
-       }
-
        if (core_set_queue_depth_for_node(tpg, acl) < 0) {
                core_free_device_list_for_node(acl, tpg);
                tpg->se_tpg_tfo->tpg_release_fabric_acl(tpg, acl);
@@ -367,11 +345,6 @@ struct se_node_acl *core_tpg_add_initiator_node_acl(
 
        tpg->se_tpg_tfo->set_default_node_attributes(acl);
 
-       if (core_create_device_list_for_node(acl) < 0) {
-               tpg->se_tpg_tfo->tpg_release_fabric_acl(tpg, acl);
-               return ERR_PTR(-ENOMEM);
-       }
-
        if (core_set_queue_depth_for_node(tpg, acl) < 0) {
                core_free_device_list_for_node(acl, tpg);
                tpg->se_tpg_tfo->tpg_release_fabric_acl(tpg, acl);
@@ -628,14 +601,6 @@ int core_tpg_register(
        void *tpg_fabric_ptr,
        int se_tpg_type)
 {
-       se_tpg->tpg_lun_list = kzalloc(TRANSPORT_MAX_LUNS_PER_TPG * 
sizeof(void*),
-                                      GFP_KERNEL);
-       if (!se_tpg->tpg_lun_list) {
-               pr_err("Unable to allocate struct se_portal_group->"
-                               "tpg_lun_list\n");
-               return -ENOMEM;
-       }
-
        se_tpg->se_tpg_type = se_tpg_type;
        se_tpg->se_tpg_fabric_ptr = tpg_fabric_ptr;
        se_tpg->se_tpg_tfo = tfo;
@@ -648,12 +613,9 @@ int core_tpg_register(
        spin_lock_init(&se_tpg->session_lock);
        spin_lock_init(&se_tpg->tpg_lun_lock);
 
-       if (se_tpg->se_tpg_type == TRANSPORT_TPG_TYPE_NORMAL) {
-               if (core_tpg_setup_virtual_lun0(se_tpg) < 0) {
-                       kfree(se_tpg->tpg_lun_list);
+       if (se_tpg->se_tpg_type == TRANSPORT_TPG_TYPE_NORMAL)
+               if (core_tpg_setup_virtual_lun0(se_tpg) < 0)
                        return -ENOMEM;
-               }
-       }
 
        spin_lock_bh(&tpg_lock);
        list_add_tail(&se_tpg->se_tpg_node, &tpg_list);
@@ -710,7 +672,7 @@ int core_tpg_deregister(struct se_portal_group *se_tpg)
                core_tpg_remove_lun(se_tpg, &se_tpg->tpg_virt_lun0);
 
        se_tpg->se_tpg_fabric_ptr = NULL;
-       kfree(se_tpg->tpg_lun_list);
+
        return 0;
 }
 EXPORT_SYMBOL(core_tpg_deregister);
diff --git a/include/target/target_core_base.h 
b/include/target/target_core_base.h
index 6981642..c0d93c5 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -577,7 +577,7 @@ struct se_node_acl {
        char                    acl_tag[MAX_ACL_TAG_SIZE];
        /* Used for PR SPEC_I_PT=1 and REGISTER_AND_MOVE */
        atomic_t                acl_pr_ref_count;
-       struct se_dev_entry     **device_list;
+       struct se_dev_entry     *device_list[TRANSPORT_MAX_LUNS_PER_TPG];
        struct se_session       *nacl_sess;
        struct se_portal_group *se_tpg;
        spinlock_t              device_list_lock;
@@ -864,7 +864,7 @@ struct se_portal_group {
        struct list_head        se_tpg_node;
        /* linked list for initiator ACL list */
        struct list_head        acl_node_list;
-       struct se_lun           **tpg_lun_list;
+       struct se_lun           *tpg_lun_list[TRANSPORT_MAX_LUNS_PER_TPG];
        struct se_lun           tpg_virt_lun0;
        /* List of TCM sessions associated wth this TPG */
        struct list_head        tpg_sess_list;
-- 
1.8.5.3

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to