qla2xxx: Fix scsi_host leak on qlt_lport_register callback failure
authorNicholas Bellinger <nab@linux-iscsi.org>
Tue, 17 Dec 2013 09:51:22 +0000 (01:51 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 19 Dec 2013 22:50:17 +0000 (14:50 -0800)
This patch fixes a possible scsi_host reference leak in qlt_lport_register(),
when a non zero return from the passed (*callback) does not call drop the
local reference via scsi_host_put() before returning.

This currently does not effect existing tcm_qla2xxx code as the passed callback
will never fail, but fix this up regardless for future code.

Cc: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/scsi/qla2xxx/qla_target.c

index 3bb0a1d1622ab3df688d9cb97d55b69ab219c654..38a1257e76e1ec432c6cc81893b54a27ee30081a 100644 (file)
@@ -4291,6 +4291,7 @@ int qlt_lport_register(struct qla_tgt_func_tmpl *qla_tgt_ops, u64 wwpn,
                if (rc != 0) {
                        ha->tgt.tgt_ops = NULL;
                        ha->tgt.target_lport_ptr = NULL;
+                       scsi_host_put(host);
                }
                mutex_unlock(&qla_tgt_mutex);
                return rc;