lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Thu, 2 Nov 2017 18:04:04 +0100
From:   SF Markus Elfring <elfring@...rs.sourceforge.net>
To:     linux-scsi@...r.kernel.org, aacraid@...ptec.com,
        "James E. J. Bottomley" <jejb@...ux.vnet.ibm.com>,
        "Martin K. Petersen" <martin.petersen@...cle.com>
Cc:     LKML <linux-kernel@...r.kernel.org>,
        kernel-janitors@...r.kernel.org
Subject: [PATCH] SCSI-dpt_i2o: Use common error handling code in
 adpt_hba_reset()

From: Markus Elfring <elfring@...rs.sourceforge.net>
Date: Thu, 2 Nov 2017 17:45:14 +0100

* Adjust five function calls together with a variable assignment.

* Add a jump target so that a bit of exception handling can be better
  reused at the end of this function.

  This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@...rs.sourceforge.net>
---
 drivers/scsi/dpt_i2o.c | 41 ++++++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index fd172b0890d3..cbe1a36fb531 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -832,37 +832,40 @@ static int adpt_hba_reset(adpt_hba* pHba)
 	pHba->state |= DPTI_STATE_RESET;
 
 	// Activate does get status , init outbound, and get hrt
-	if ((rcode=adpt_i2o_activate_hba(pHba)) < 0) {
+	rcode = adpt_i2o_activate_hba(pHba);
+	if (rcode < 0) {
 		printk(KERN_ERR "%s: Could not activate\n", pHba->name);
-		adpt_i2o_delete_hba(pHba);
-		return rcode;
+		goto delete_hba;
 	}
 
-	if ((rcode=adpt_i2o_build_sys_table()) < 0) {
-		adpt_i2o_delete_hba(pHba);
-		return rcode;
-	}
+	rcode = adpt_i2o_build_sys_table();
+	if (rcode < 0)
+		goto delete_hba;
+
 	PDEBUG("%s: in HOLD state\n",pHba->name);
 
-	if ((rcode=adpt_i2o_online_hba(pHba)) < 0) {
-		adpt_i2o_delete_hba(pHba);	
-		return rcode;
-	}
+	rcode = adpt_i2o_online_hba(pHba);
+	if (rcode < 0)
+		goto delete_hba;
+
 	PDEBUG("%s: in OPERATIONAL state\n",pHba->name);
 
-	if ((rcode=adpt_i2o_lct_get(pHba)) < 0){
-		adpt_i2o_delete_hba(pHba);
-		return rcode;
-	}
+	rcode = adpt_i2o_lct_get(pHba);
+	if (rcode < 0)
+		goto delete_hba;
+
+	rcode = adpt_i2o_reparse_lct(pHba);
+	if (rcode < 0)
+		goto delete_hba;
 
-	if ((rcode=adpt_i2o_reparse_lct(pHba)) < 0){
-		adpt_i2o_delete_hba(pHba);
-		return rcode;
-	}
 	pHba->state &= ~DPTI_STATE_RESET;
 
 	adpt_fail_posted_scbs(pHba);
 	return 0;	/* return success */
+
+delete_hba:
+	adpt_i2o_delete_hba(pHba);
+	return rcode;
 }
 
 /*===========================================================================
-- 
2.15.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ