[SCSI] target: fixed missing lock drop in error path

The struct se_node_acl->device_list_lock needs to be released if either
sanity check for struct se_dev_entry->se_lun_acl or deve->se_lun fails.

Signed-off-by: Fubo Chen <fubo.chen@gmail.com>
Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
Fubo Chen 2011-02-09 15:34:48 -08:00 committed by James Bottomley
parent 29fe609d12
commit 85dc98d93f

View file

@ -395,12 +395,14 @@ int core_update_device_list_for_node(
printk(KERN_ERR "struct se_dev_entry->se_lun_acl" printk(KERN_ERR "struct se_dev_entry->se_lun_acl"
" already set for demo mode -> explict" " already set for demo mode -> explict"
" LUN ACL transition\n"); " LUN ACL transition\n");
spin_unlock_irq(&nacl->device_list_lock);
return -1; return -1;
} }
if (deve->se_lun != lun) { if (deve->se_lun != lun) {
printk(KERN_ERR "struct se_dev_entry->se_lun does" printk(KERN_ERR "struct se_dev_entry->se_lun does"
" match passed struct se_lun for demo mode" " match passed struct se_lun for demo mode"
" -> explict LUN ACL transition\n"); " -> explict LUN ACL transition\n");
spin_unlock_irq(&nacl->device_list_lock);
return -1; return -1;
} }
deve->se_lun_acl = lun_acl; deve->se_lun_acl = lun_acl;