summaryrefslogtreecommitdiff
path: root/usr
diff options
context:
space:
mode:
authorcarlsonj <none@none>2007-03-07 09:58:36 -0800
committercarlsonj <none@none>2007-03-07 09:58:36 -0800
commit4c06cebaab828bdb4d928a3a8ad3baf973b3e1a3 (patch)
tree661e4ccacdf5347a2378e7654bbb1f725d149c98 /usr
parentc086188084d52441b174441b900373b9916d467b (diff)
downloadillumos-gate-4c06cebaab828bdb4d928a3a8ad3baf973b3e1a3.tar.gz
6479968 TCP connections over loopback misorder user data on squeue reentry
Diffstat (limited to 'usr')
-rw-r--r--usr/src/uts/common/inet/squeue.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/usr/src/uts/common/inet/squeue.c b/usr/src/uts/common/inet/squeue.c
index 0947b26268..4895e2249e 100644
--- a/usr/src/uts/common/inet/squeue.c
+++ b/usr/src/uts/common/inet/squeue.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -882,7 +882,7 @@ squeue_enter(squeue_t *sqp, mblk_t *mp, sqproc_t proc, void *arg,
* of stack getting blown with multiple traversal.
*/
if (!(sqp->sq_state & SQS_REENTER) &&
- (sqp->sq_run == curthread) &&
+ (sqp->sq_run == curthread) && sqp->sq_first == NULL &&
(((conn_t *)arg)->conn_on_sqp == B_FALSE)) {
sqp->sq_state |= SQS_REENTER;
mutex_exit(&sqp->sq_lock);
@@ -1027,7 +1027,7 @@ squeue_enter_nodrain(squeue_t *sqp, mblk_t *mp, sqproc_t proc, void *arg,
* of stack getting blown with multiple traversal.
*/
if (being_processed && !(sqp->sq_state & SQS_REENTER) &&
- (sqp->sq_run == curthread) &&
+ (sqp->sq_run == curthread) && sqp->sq_first == NULL &&
(((conn_t *)arg)->conn_on_sqp == B_FALSE)) {
sqp->sq_state |= SQS_REENTER;
mutex_exit(&sqp->sq_lock);