iscsi-target: fix heap buffer overflow on error
[pandora-kernel.git] / drivers / target / target_core_tpg.c
index 8ddd133..d048e33 100644 (file)
@@ -63,7 +63,6 @@ static void core_clear_initiator_node_from_tpg(
        int i;
        struct se_dev_entry *deve;
        struct se_lun *lun;
-       struct se_lun_acl *acl, *acl_tmp;
 
        spin_lock_irq(&nacl->device_list_lock);
        for (i = 0; i < TRANSPORT_MAX_LUNS_PER_TPG; i++) {
@@ -84,28 +83,7 @@ static void core_clear_initiator_node_from_tpg(
                core_update_device_list_for_node(lun, NULL, deve->mapped_lun,
                        TRANSPORT_LUNFLAGS_NO_ACCESS, nacl, tpg, 0);
 
-               spin_lock(&lun->lun_acl_lock);
-               list_for_each_entry_safe(acl, acl_tmp,
-                                       &lun->lun_acl_list, lacl_list) {
-                       if (!strcmp(acl->initiatorname, nacl->initiatorname) &&
-                           (acl->mapped_lun == deve->mapped_lun))
-                               break;
-               }
-
-               if (!acl) {
-                       pr_err("Unable to locate struct se_lun_acl for %s,"
-                               " mapped_lun: %u\n", nacl->initiatorname,
-                               deve->mapped_lun);
-                       spin_unlock(&lun->lun_acl_lock);
-                       spin_lock_irq(&nacl->device_list_lock);
-                       continue;
-               }
-
-               list_del(&acl->lacl_list);
-               spin_unlock(&lun->lun_acl_lock);
-
                spin_lock_irq(&nacl->device_list_lock);
-               kfree(acl);
        }
        spin_unlock_irq(&nacl->device_list_lock);
 }
@@ -139,16 +117,10 @@ struct se_node_acl *core_tpg_get_initiator_node_acl(
        struct se_node_acl *acl;
 
        spin_lock_irq(&tpg->acl_node_lock);
-       list_for_each_entry(acl, &tpg->acl_node_list, acl_list) {
-               if (!strcmp(acl->initiatorname, initiatorname) &&
-                   !acl->dynamic_node_acl) {
-                       spin_unlock_irq(&tpg->acl_node_lock);
-                       return acl;
-               }
-       }
+       acl = __core_tpg_get_initiator_node_acl(tpg, initiatorname);
        spin_unlock_irq(&tpg->acl_node_lock);
 
-       return NULL;
+       return acl;
 }
 
 /*     core_tpg_add_node_to_devs():