Since qlt_remove_target() only calls qlt_release() if
vha->vha_tgt.qla_tgt != NULL, checking that pointer inside qlt_release()
is not necessary. This patch avoids that Coverity reports the following:

CID 188348 (#1 of 1): Dereference after null check (FORWARD_NULL)
var_deref_model: Passing null pointer &vha->vha_tgt.qla_tgt->tgt_list_entry
to list_del, which dereferences it.

Cc: Himanshu Madhani <hmadh...@marvell.com>
Cc: Giridhar Malavali <gmalav...@marvell.com>
Signed-off-by: Bart Van Assche <bvanass...@acm.org>
---
 drivers/scsi/qla2xxx/qla_target.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_target.c 
b/drivers/scsi/qla2xxx/qla_target.c
index 153f78aeb4b0..906e1a14b775 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -1590,11 +1590,10 @@ static void qlt_release(struct qla_tgt *tgt)
        struct qla_qpair_hint *h;
        struct qla_hw_data *ha = vha->hw;
 
-       if ((vha->vha_tgt.qla_tgt != NULL) && !tgt->tgt_stop &&
-           !tgt->tgt_stopped)
+       if (!tgt->tgt_stop && !tgt->tgt_stopped)
                qlt_stop_phase1(tgt);
 
-       if ((vha->vha_tgt.qla_tgt != NULL) && !tgt->tgt_stopped)
+       if (!tgt->tgt_stopped)
                qlt_stop_phase2(tgt);
 
        for (i = 0; i < vha->hw->max_qpairs + 1; i++) {
-- 
2.22.0.rc1

Reply via email to