Blame SOURCES/0088-scsi-scsi-qla2xxx-Avoid-that-Coverity-complains-abou.patch

3d7c23
From 025fc3a4d57c2e584da0ae1cbde5be3b558936db Mon Sep 17 00:00:00 2001
3d7c23
From: Himanshu Madhani <hmadhani@redhat.com>
3d7c23
Date: Thu, 1 Aug 2019 15:55:48 -0400
3d7c23
Subject: [PATCH 088/124] [scsi] scsi: qla2xxx: Avoid that Coverity complains
3d7c23
 about dereferencing a NULL rport pointer
3d7c23
3d7c23
Message-id: <20190801155618.12650-89-hmadhani@redhat.com>
3d7c23
Patchwork-id: 267865
3d7c23
O-Subject: [RHEL 7.8 e-stor PATCH 088/118] scsi: qla2xxx: Avoid that Coverity complains about dereferencing a NULL rport pointer
3d7c23
Bugzilla: 1729270
3d7c23
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
3d7c23
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
3d7c23
3d7c23
From: Bart Van Assche <bvanassche@acm.org>
3d7c23
3d7c23
Bugzilla 1729270
3d7c23
3d7c23
Since Coverity cannot know that rport != NULL in qla2xxx_queuecommand() and
3d7c23
since there is code in that function that dereferences the rport pointer,
3d7c23
modify qla2xxx_queuecommand() such that it fails SCSI commands if rport ==
3d7c23
NULL.
3d7c23
3d7c23
Cc: Himanshu Madhani <hmadhani@marvell.com>
3d7c23
Cc: Giridhar Malavali <gmalavali@marvell.com>
3d7c23
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
3d7c23
Acked-by: Himanshu Madhani <hmadhani@marvell.com>
3d7c23
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
3d7c23
(cherry picked from commit 2dbb02fd495c9b2e41ba37d6fec2aa713d328788)
3d7c23
Signed-off-by: Himanshu Madhani <hmadhani@redhat.com>
3d7c23
Signed-off-by: Jan Stancek <jstancek@redhat.com>
3d7c23
---
3d7c23
 drivers/scsi/qla2xxx/qla_os.c | 5 +++--
3d7c23
 1 file changed, 3 insertions(+), 2 deletions(-)
3d7c23
3d7c23
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
3d7c23
index 11fa33fde436..83d06db7e9fa 100644
3d7c23
--- a/drivers/scsi/qla2xxx/qla_os.c
3d7c23
+++ b/drivers/scsi/qla2xxx/qla_os.c
3d7c23
@@ -906,7 +906,8 @@ qla2xxx_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
3d7c23
 	uint32_t tag;
3d7c23
 	uint16_t hwq;
3d7c23
 
3d7c23
-	if (unlikely(test_bit(UNLOADING, &base_vha->dpc_flags))) {
3d7c23
+	if (unlikely(test_bit(UNLOADING, &base_vha->dpc_flags)) ||
3d7c23
+	    WARN_ON_ONCE(!rport)) {
3d7c23
 		cmd->result = DID_NO_CONNECT << 16;
3d7c23
 		goto qc24_fail_command;
3d7c23
 	}
3d7c23
@@ -1033,7 +1034,7 @@ qla2xxx_mqueuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd,
3d7c23
 	srb_t *sp;
3d7c23
 	int rval;
3d7c23
 
3d7c23
-	rval = fc_remote_port_chkready(rport);
3d7c23
+	rval = rport ? fc_remote_port_chkready(rport) : FC_PORTSTATE_OFFLINE;
3d7c23
 	if (rval) {
3d7c23
 		cmd->result = rval;
3d7c23
 		ql_dbg(ql_dbg_io + ql_dbg_verbose, vha, 0x3076,
3d7c23
-- 
3d7c23
2.13.6
3d7c23