linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saurav Kashyap <saurav.kashyap@qlogic.com>
To: jbottomley@parallels.com
Cc: giridhar.malavali@qlogic.com, saurav.kashyap@qlogic.com,
	andrew.vasquez@qlogic.com, linux-scsi@vger.kernel.org
Subject: [PATCH 16/16] qla2xxx: Fix a memory leak in an error path of qla2x00_process_els()
Date: Tue, 25 Jun 2013 11:27:31 -0400	[thread overview]
Message-ID: <1372174051-4211-17-git-send-email-saurav.kashyap@qlogic.com> (raw)
In-Reply-To: <1372174051-4211-1-git-send-email-saurav.kashyap@qlogic.com>

From: Bart Van Assche <bvanassche@acm.org>

Avoid that the fcport structure gets leaked if
bsg_job->request->msgcode == FC_BSG_HST_ELS_NOLOGIN, the fcport
allocation succeeds and the !vha->flags.online branch is taken.
This was detected by Coverity. However, Coverity does not recognize
that all qla2x00_process_els() callers specify either
FC_BSG_RPT_ELS or FC_BSG_HST_ELS_NOLOGIN in the field
bsg_job->request->msgcode and that the value of that field is not
modified inside that function. This results in a false positive
report about a possible memory leak in an error path for
bsg_job->request->msgcode values other than the two mentioned
values.  Make it easy for Coverity (and for humans) to recognize
that there is no fcport leak in the error path by changing the
bsg_job->request->msgcode == FC_BSG_HST_ELS_NOLOGIN test into
bsg_job->request->msgcode != FC_BSG_RPT_ELS.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_bsg.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_bsg.c b/drivers/scsi/qla2xxx/qla_bsg.c
index b85f002..417eaad 100644
--- a/drivers/scsi/qla2xxx/qla_bsg.c
+++ b/drivers/scsi/qla2xxx/qla_bsg.c
@@ -269,6 +269,12 @@ qla2x00_process_els(struct fc_bsg_job *bsg_job)
 		type = "FC_BSG_HST_ELS_NOLOGIN";
 	}
 
+	if (!vha->flags.online) {
+		ql_log(ql_log_warn, vha, 0x7005, "Host not online.\n");
+		rval = -EIO;
+		goto done;
+	}
+
 	/* pass through is supported only for ISP 4Gb or higher */
 	if (!IS_FWI2_CAPABLE(ha)) {
 		ql_dbg(ql_dbg_user, vha, 0x7001,
@@ -326,12 +332,6 @@ qla2x00_process_els(struct fc_bsg_job *bsg_job)
 			NPH_FABRIC_CONTROLLER : NPH_F_PORT;
 	}
 
-	if (!vha->flags.online) {
-		ql_log(ql_log_warn, vha, 0x7005, "Host not online.\n");
-		rval = -EIO;
-		goto done;
-	}
-
 	req_sg_cnt =
 		dma_map_sg(&ha->pdev->dev, bsg_job->request_payload.sg_list,
 		bsg_job->request_payload.sg_cnt, DMA_TO_DEVICE);
@@ -399,7 +399,7 @@ done_unmap_sg:
 	goto done_free_fcport;
 
 done_free_fcport:
-	if (bsg_job->request->msgcode == FC_BSG_HST_ELS_NOLOGIN)
+	if (bsg_job->request->msgcode == FC_BSG_RPT_ELS)
 		kfree(fcport);
 done:
 	return rval;
-- 
1.7.7



      parent reply	other threads:[~2013-06-25 15:53 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-25 15:27 [PATCH 00/16] qla2xxx: Patches for scsi "misc" branch Saurav Kashyap
2013-06-25 15:27 ` [PATCH 01/16] qla2xxx: Clear the MBX_INTR_WAIT flag when the mailbox time-out happens Saurav Kashyap
2013-06-25 15:27 ` [PATCH 02/16] qla2xxx: Set the index in outstanding command array to NULL when cmd is aborted when the request timeout Saurav Kashyap
2013-06-25 15:27 ` [PATCH 03/16] qla2xxx: Move qla2x00_free_device to the correct location Saurav Kashyap
2013-06-25 15:27 ` [PATCH 04/16] qla2xxx: Do not query FC statistics during chip reset Saurav Kashyap
2013-06-25 15:27 ` [PATCH 05/16] qla2xxx: Do not take a second firmware dump when intentionally generating one Saurav Kashyap
2013-06-25 15:27 ` [PATCH 06/16] qla2xxx: Fix sparse warning from qla_mr.c and qla_iocb.c Saurav Kashyap
2013-06-25 15:27 ` [PATCH 07/16] qla2xxx: Clean up qla24xx_iidma() Saurav Kashyap
2013-06-25 15:27 ` [PATCH 08/16] qla2xxx: Clean up qla84xx_mgmt_cmd() Saurav Kashyap
2013-06-25 15:27 ` [PATCH 09/16] qla2xxx: Remove dead code in qla2x00_configure_hba() Saurav Kashyap
2013-06-25 15:27 ` [PATCH 10/16] qla2xxx: Remove two superfluous tests Saurav Kashyap
2013-06-25 15:27 ` [PATCH 11/16] qla2xxx: Remove a dead assignment in qla24xx_build_scsi_crc_2_iocbs() Saurav Kashyap
2013-06-25 15:27 ` [PATCH 12/16] qla2xxx: Remove redundant assignments Saurav Kashyap
2013-06-25 15:27 ` [PATCH 13/16] qla2xxx: Help Coverity with analyzing ct_sns_pkt initialization Saurav Kashyap
2013-06-25 15:27 ` [PATCH 14/16] qla2xxx: Fix qla2xxx_check_risc_status() Saurav Kashyap
2013-06-25 15:27 ` [PATCH 15/16] qla2xxx: Remove an unused variable from qla2x00_remove_one() Saurav Kashyap
2013-06-25 15:27 ` Saurav Kashyap [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1372174051-4211-17-git-send-email-saurav.kashyap@qlogic.com \
    --to=saurav.kashyap@qlogic.com \
    --cc=andrew.vasquez@qlogic.com \
    --cc=giridhar.malavali@qlogic.com \
    --cc=jbottomley@parallels.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).