changeset 12634:09fce1ed6a60

6960607 aggr_lacp_rx_thread() LACP cleanup logic induces panic
author meem <Peter.Memishian@Sun.COM>
date Wed, 16 Jun 2010 18:11:17 -0400
parents 9f2cda0ed938
children c51051e2d948
files usr/src/uts/common/io/aggr/aggr_lacp.c
diffstat 1 files changed, 2 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/aggr/aggr_lacp.c	Wed Jun 16 10:02:44 2010 -0700
+++ b/usr/src/uts/common/io/aggr/aggr_lacp.c	Wed Jun 16 18:11:17 2010 -0400
@@ -19,8 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  */
 
 /*
@@ -2360,14 +2359,13 @@
 	 * We cannot use freemsgchain() here since we need to clear the
 	 * b_prev field.
 	 */
-	while ((mp = grp->lg_lacp_head) != NULL) {
+	for (mp = grp->lg_lacp_head; mp != NULL; mp = nextmp) {
 		port = (aggr_port_t *)mp->b_prev;
 		AGGR_PORT_REFRELE(port);
 		nextmp = mp->b_next;
 		mp->b_next = NULL;
 		mp->b_prev = NULL;
 		freemsg(mp);
-		mp = nextmp;
 	}
 
 	grp->lg_lacp_head = grp->lg_lacp_tail = NULL;