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 

Relevant Architecture: sparc
    NOTE: sun4 sun4c sun4m

Patches accumulated and obsoleted by this patch: 100804-03

Patches which 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.



