dect
/
linux-2.6
Archived
13
0
Fork 0

Merge branch '3.4-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending

Pull target fix from Nicholas Bellinger:
 "This patch removes some incorrect legacy code to free se_lun_acl
  memory in the NodeACL release path that could potentially trigger an
  OOPS during shutdown once dynamic -> explicit initiator NodeACL
  conversion has occurred.

  That said, we've been able to trigger an OOPS in v4.0 code for this
  special case when the associated MappedLUNs had not also been made
  explicit based on active TPG LUN layout during the conversion, so it
  really makes senses to go ahead and drop this extra cruft to avoid any
  possible issues here.

  This ends up only effecting iscsi-target module code (it's the only
  user) and is CC'ed to stable."

* '3.4-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
  target: Drop incorrect se_lun_acl release for dynamic -> explict ACL conversion
This commit is contained in:
Linus Torvalds 2012-05-11 16:49:09 -07:00
commit 04e53358ec
1 changed files with 0 additions and 22 deletions

View File

@ -60,7 +60,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++) {
@ -81,28 +80,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);
}