summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/tcp/tcp_fusion.c
diff options
context:
space:
mode:
authorAnders Persson <Anders.Persson@Sun.COM>2009-02-02 18:55:27 -0800
committerAnders Persson <Anders.Persson@Sun.COM>2009-02-02 18:55:27 -0800
commit7cae988582ad3aaab3cb363ce29ee31bf28ee865 (patch)
tree2dcf4cf7322f183c446a5d5bdeb824105536cd80 /usr/src/uts/common/inet/tcp/tcp_fusion.c
parent27bd165a797ae4a8cc7683b628d48907a72e43c4 (diff)
downloadillumos-joyent-7cae988582ad3aaab3cb363ce29ee31bf28ee865.tar.gz
6796351 SCTP socket close() can cause a panic
6795817 BAD TRAP: type=31 rp=2a1052b3770 addr=20 mmu_fsr=0 occurred in module "unix" due to a NULL pointer .
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp_fusion.c')
-rw-r--r--usr/src/uts/common/inet/tcp/tcp_fusion.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp_fusion.c b/usr/src/uts/common/inet/tcp/tcp_fusion.c
index 3127c13b71..1c69ced8a1 100644
--- a/usr/src/uts/common/inet/tcp/tcp_fusion.c
+++ b/usr/src/uts/common/inet/tcp/tcp_fusion.c
@@ -781,9 +781,14 @@ tcp_fuse_output(tcp_t *tcp, mblk_t *mp, uint32_t send_size)
/*
* Enqueue data into the peer's receive list; we may or may not
* drain the contents depending on the conditions below.
+ *
+ * tcp_hard_binding indicates that accept has not yet completed,
+ * in which case we use tcp_rcv_enqueue() instead of calling
+ * su_recv directly. Queued data will be drained when the accept
+ * completes (in tcp_accept_finish()).
*/
if (IPCL_IS_NONSTR(peer_tcp->tcp_connp) &&
- peer_tcp->tcp_connp->conn_upper_handle != NULL) {
+ !peer_tcp->tcp_hard_binding) {
int error;
int flags = 0;