summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/squeue.c
diff options
context:
space:
mode:
authorThirumalai Srinivasan <Thirumalai.Srinivasan@Sun.COM>2009-06-26 12:06:35 -0700
committerThirumalai Srinivasan <Thirumalai.Srinivasan@Sun.COM>2009-06-26 12:06:35 -0700
commit4cc341244283c4f742842066f99a49422ca19bbd (patch)
treed5517da04fb460a043e0b5ad0bbbee3aef843a82 /usr/src/uts/common/inet/squeue.c
parentcd997836b08639dc4d44a032cadd0c7d526f960c (diff)
downloadillumos-joyent-4cc341244283c4f742842066f99a49422ca19bbd.tar.gz
6799660 panic, NULL pointer dereference, ip:ill_capability_ack_thr
6807899 system hang when running dladm delete-vnic 6816455 Panic : assertion failed: (sqp->sq_state & (SQS_DEFAULT|SQS_ILL_BOUND)) == SQS_DEFAULT
Diffstat (limited to 'usr/src/uts/common/inet/squeue.c')
-rw-r--r--usr/src/uts/common/inet/squeue.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/usr/src/uts/common/inet/squeue.c b/usr/src/uts/common/inet/squeue.c
index b4e41e78c7..e46293d820 100644
--- a/usr/src/uts/common/inet/squeue.c
+++ b/usr/src/uts/common/inet/squeue.c
@@ -1055,6 +1055,14 @@ poll_again:
sqp->sq_state &= ~(SQS_PROC|SQS_GET_PKTS);
/* LINTED: constant in conditional context */
SQS_POLLING_OFF(sqp, B_TRUE, sq_rx_ring);
+
+ /*
+ * If there is a pending control operation
+ * wake up the worker, since it is currently
+ * not running.
+ */
+ if (sqp->sq_state & SQS_WORKER_THR_CONTROL)
+ cv_signal(&sqp->sq_worker_cv);
} else {
/*
* Worker thread is already running. We don't need