From d17b05b6ba5ce4569b13b250fe44164219de8c53 Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Wed, 15 Jan 2014 16:08:52 +0000 Subject: [PATCH] 4492 zone hung in down state, stuck in ilb_stack_fini Reviewed by: Robert Mustacchi Reviewed by: Dan McDonald Approved by: Richard Lowe --- usr/src/uts/common/inet/ilb/ilb_conn.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/usr/src/uts/common/inet/ilb/ilb_conn.c b/usr/src/uts/common/inet/ilb/ilb_conn.c index 5029552f19..7f79d41dd6 100644 --- a/usr/src/uts/common/inet/ilb/ilb_conn.c +++ b/usr/src/uts/common/inet/ilb/ilb_conn.c @@ -22,6 +22,7 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * Copyright 2014 Joyent, Inc. All rights reserved. */ #include @@ -365,6 +366,7 @@ ilb_conn_hash_fini(ilb_stack_t *ilbs) { uint32_t i; ilb_conn_t *connp; + ilb_conn_hash_t *hash; if (ilbs->ilbs_c2s_conn_hash == NULL) { ASSERT(ilbs->ilbs_s2c_conn_hash == NULL); @@ -388,10 +390,10 @@ ilb_conn_hash_fini(ilb_stack_t *ilbs) ilbs->ilbs_conn_taskq = NULL; /* Then remove all the conns. */ + hash = ilbs->ilbs_s2c_conn_hash; for (i = 0; i < ilbs->ilbs_conn_hash_size; i++) { - while ((connp = ilbs->ilbs_s2c_conn_hash->ilb_connp) != NULL) { - ilbs->ilbs_s2c_conn_hash->ilb_connp = - connp->conn_s2c_next; + while ((connp = hash[i].ilb_connp) != NULL) { + hash[i].ilb_connp = connp->conn_s2c_next; ILB_SERVER_REFRELE(connp->conn_server); if (connp->conn_rule_cache.topo == ILB_TOPO_IMPL_NAT) { ilb_nat_src_entry_t *ent; -- 2.11.4.GIT