diff options
author | Anders Persson <Anders.Persson@Sun.COM> | 2009-02-02 18:55:27 -0800 |
---|---|---|
committer | Anders Persson <Anders.Persson@Sun.COM> | 2009-02-02 18:55:27 -0800 |
commit | 7cae988582ad3aaab3cb363ce29ee31bf28ee865 (patch) | |
tree | 2dcf4cf7322f183c446a5d5bdeb824105536cd80 /usr/src/uts/common/inet/tcp/tcp_fusion.c | |
parent | 27bd165a797ae4a8cc7683b628d48907a72e43c4 (diff) | |
download | illumos-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.c | 7 |
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; |