Patch-ID# 100584-08 Keywords: getsockopt RESET trap mbuf leak bus panic TCP Synopsis: SunOS 4.1.3: TCP Interface Jumbo Patch Date: Oct/19/95 Solaris Release: 1.1 SunOS Release: 4.1.3 Unbundled Product: Unbundled Release: Note: This patch is available for 4.1.3_U1 as 102010 and for 4.1.4 as 102517. BugId's fixed with this patch: 1097784 1077939 1062394 1185571 1199120 1053503 1151988 1071377 1170239 Changes incorporated in this version: 1097784 1077939 1062394 1185571 Architectures for which this patch is available: sun4 sun4c sun4m Patches accumulated and obsoleted by this patch: 100804-03 Patches which may conflict with this patch: Obsoleted by: Files included with this patch: ip_output.o tcp_usrreq.o tcp_timer.o tcp_input.o tcp_output.o Problem Description: -08 Rev: 1097784 TCP "reset"s can cause an mbuf leak, resulting in mbuf map full 1077939 If an application does a getsockopt() on a SOCK_STREAM (TCP) socket after the other side of the connection has sent a TCP RESET for the stream, the kernel gets a Bus Trap in the tcp_ctloutput() or ip_ctloutput() routine. 1062394 A TCP RESET will be sent if the application does a write() to the socket after the other side of the connection has closed the socket (causing the remote end to be in FIN_WAIT_2 state, and the local end to be in CLOSE_WAIT state). 1185571 System table file entry leaking for socket -01 thru -07 Rev: 1199120 TCP connections do not reset correctly after crash-restart 1053503 Under certain conditions the tcp code gets in a loop and continuously sends acks, when using the loopback interface this freezes the system. 1151988 System panic in tcp_respond() 1071377 sigio was not being generated properly when tcp sockets were used. 1170239 Exponential backoff timer not reset Patch Installation Instructions: As root, make a backup copy of files to be patched: mv /sys/`arch -k`/OBJ/tcp_usrreq.o /sys/`arch -k`/OBJ/tcp_usrreq.o.FCS mv /sys/`arch -k`/OBJ/ip_output.o /sys/`arch -k`/OBJ/ip_output.o.FCS mv /sys/`arch -k`/OBJ/tcp_timer.o /sys/`arch -k`/OBJ/tcp_timer.o.FCS mv /sys/`arch -k`/OBJ/tcp_input.o /sys/`arch -k`/OBJ/tcp_input.o.FCS mv /sys/`arch -k`/OBJ/tcp_output.o /sys/`arch -k`/OBJ/tcp_output.o.FCS Now, install the patched files and set permissions: cp `arch -k`/tcp_usrreq.o /sys/`arch -k`/OBJ cp `arch -k`/ip_output.o /sys/`arch -k`/OBJ cp `arch -k`/tcp_timer.o /sys/`arch -k`/OBJ cp `arch -k`/tcp_input.o /sys/`arch -k`/OBJ cp `arch -k`/tcp_output.o /sys/`arch -k`/OBJ chmod 444 /sys/`arch -k`/OBJ/tcp_*.o chmod 444 /sys/`arch -k`/OBJ/ip_output.o Rebuild the new kernel. Please refer to the system and networking administration manual for details on building and installing a new kernel.