public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] qla4xx: a small loop fix
@ 2011-11-01 16:46 Tomas Henzl
  2011-11-01 18:10 ` Mike Christie
  0 siblings, 1 reply; 4+ messages in thread
From: Tomas Henzl @ 2011-11-01 16:46 UTC (permalink / raw)
  To: 'linux-scsi@vger.kernel.org'
  Cc: vikas.chaudhary, lalit.chandivade, ravi.anand

From: Tomas Henzl <thenzl@redhat.com>

When the qla4xxx_get_fwddb_entry returns QLA_ERROR
the nex_idx is not updated, 
      for (idx = 0; idx < max_ddbs; idx = next_idx) {
                ret = qla4xxx_get_fwddb_entry(ha, idx, NULL, 0, NULL,
                                              &next_idx, &state, &conn_err,
                                                NULL, NULL);
                if (ret == QLA_ERROR)
                        continue;
 
This means there is a risk that the 'idx < max_ddbs' condition will never
met and the loop will loop forever.
Fix this by explicitly increasing the next_idx in the error condition.

Maybe a break instead of continue is more appropriate, leaving the decision
on the qlogic maintainer.

Signed-off-by: Tomas Henzl <thenzl@redhat.com>

diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c
index 3075fba..17acb17 100644
--- a/drivers/scsi/qla4xxx/ql4_init.c
+++ b/drivers/scsi/qla4xxx/ql4_init.c
@@ -787,8 +787,10 @@ static void qla4xxx_free_ddb_index(struct scsi_qla_host *ha)
 		ret = qla4xxx_get_fwddb_entry(ha, idx, NULL, 0, NULL,
 					      &next_idx, &state, &conn_err,
 						NULL, NULL);
-		if (ret == QLA_ERROR)
+		if (ret == QLA_ERROR) {
+			next_idx++;
 			continue;
+		}
 		if (state == DDB_DS_NO_CONNECTION_ACTIVE ||
 		    state == DDB_DS_SESSION_FAILED) {
 			DEBUG2(ql4_printk(KERN_INFO, ha,
-- 
1.7.6.4



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-11-01 20:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-01 16:46 [PATCH] qla4xx: a small loop fix Tomas Henzl
2011-11-01 18:10 ` Mike Christie
2011-11-01 20:22   ` Tomas Henzl
2011-11-01 20:31     ` Mike Christie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox