summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorAnders Persson <Anders.Persson@Sun.COM>2009-05-15 15:36:01 -0700
committerAnders Persson <Anders.Persson@Sun.COM>2009-05-15 15:36:01 -0700
commitbe9bec8bfc8d270cd5ad620fb84366f4071b0baa (patch)
tree571d43cd643ac92fa6b232ee932b08d04a4ae519 /usr/src
parenta1511e6b39158073666f6bd04cec5295813931f6 (diff)
downloadillumos-gate-be9bec8bfc8d270cd5ad620fb84366f4071b0baa.tar.gz
6817228 X8440(Mira) panic during snv_110 install
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/inet/ip/ip.c16
-rw-r--r--usr/src/uts/common/inet/ip/ip6.c10
2 files changed, 14 insertions, 12 deletions
diff --git a/usr/src/uts/common/inet/ip/ip.c b/usr/src/uts/common/inet/ip/ip.c
index ddaa820e8c..799e9bb30b 100644
--- a/usr/src/uts/common/inet/ip/ip.c
+++ b/usr/src/uts/common/inet/ip/ip.c
@@ -6858,18 +6858,18 @@ ip_fanout_tcp(queue_t *q, mblk_t *mp, ill_t *recv_ill, ipha_t *ipha,
squeue_t *sqp;
/*
- * For fused tcp loopback, assign the eager's
- * squeue to be that of the active connect's.
- * Note that we don't check for IP_FF_LOOPBACK
- * here since this routine gets called only
- * for loopback (unlike the IPv6 counterpart).
+ * If the queue belongs to a conn, and fused tcp
+ * loopback is enabled, assign the eager's squeue
+ * to be that of the active connect's. Note that
+ * we don't check for IP_FF_LOOPBACK here since this
+ * routine gets called only for loopback (unlike the
+ * IPv6 counterpart).
*/
- ASSERT(Q_TO_CONN(q) != NULL);
if (do_tcp_fusion &&
+ CONN_Q(q) && IPCL_IS_TCP(Q_TO_CONN(q)) &&
!CONN_INBOUND_POLICY_PRESENT(connp, ipss) &&
!secure &&
- !IPP_ENABLED(IPP_LOCAL_IN, ipst) && !ip_policy &&
- IPCL_IS_TCP(Q_TO_CONN(q))) {
+ !IPP_ENABLED(IPP_LOCAL_IN, ipst) && !ip_policy) {
ASSERT(Q_TO_CONN(q)->conn_sqp != NULL);
sqp = Q_TO_CONN(q)->conn_sqp;
} else {
diff --git a/usr/src/uts/common/inet/ip/ip6.c b/usr/src/uts/common/inet/ip/ip6.c
index 50765aa9bf..1f7320951d 100644
--- a/usr/src/uts/common/inet/ip/ip6.c
+++ b/usr/src/uts/common/inet/ip/ip6.c
@@ -3480,18 +3480,20 @@ ip_fanout_tcp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill, ill_t *inill,
tcph = (tcph_t *)&mp->b_rptr[hdr_len];
if ((tcph->th_flags[0] & (TH_SYN|TH_ACK|TH_RST|TH_URG)) == TH_SYN) {
- if (connp->conn_flags & IPCL_TCP) {
+ if (IPCL_IS_TCP(connp)) {
squeue_t *sqp;
/*
- * For fused tcp loopback, assign the eager's
- * squeue to be that of the active connect's.
+ * If the queue belongs to a conn, and fused tcp
+ * loopback is enabled, assign the eager's squeue
+ * to be that of the active connect's.
*/
if ((flags & IP_FF_LOOPBACK) && do_tcp_fusion &&
+ CONN_Q(q) && IPCL_IS_TCP(Q_TO_CONN(q)) &&
!CONN_INBOUND_POLICY_PRESENT_V6(connp, ipss) &&
!secure &&
!IP6_IN_IPP(flags, ipst)) {
- ASSERT(Q_TO_CONN(q) != NULL);
+ ASSERT(Q_TO_CONN(q)->conn_sqp != NULL);
sqp = Q_TO_CONN(q)->conn_sqp;
} else {
sqp = IP_SQUEUE_GET(lbolt);