*BSD News Article 7333


Return to BSD News archive

Newsgroups: comp.unix.bsd
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!agate!tfs.com!julian
From: julian@tfs.com (Julian Elischer)
Subject: IMPORTANT PATCH!
Message-ID: <1992Nov3.071934.25466@tfs.com>
Organization: Trw Financial Systems
Date: Tue, 3 Nov 1992 07:19:34 GMT
Lines: 49


The following patch fixes a randomly initialised variable in the icmp
and raw socket code that can cause 'ping' and 'traceroute'
to never fully close their socket's internal structures
leading to a geometrically increasing number of lost mbufs until
the system runs out of appropriate virtual space, at which
time the system panics with a 'kmem_alloc: map too small' 
and halts.

EVERY time you run ping and traceroute you make the problem
worse
The 'rights' entry should not be there.

julian
+----------------------------------+       ______ _  __
|   __--_|\  Julian Elischer       |       \     U \/ / On assignment
|  /       \ julian@tfs.com        +------>x   USA    \ in a very strange
| (   OZ    ) 2118 Milvia st. Berkeley CA. \___   ___ | country !
+- X_.---._/  USA+(510) 704-3137(wk)           \_/   \\
	  v




*** netinet/raw_ip.c.orig	Mon Nov  2 23:09:51 1992
--- netinet/raw_ip.c	Mon Nov  2 23:10:30 1992
***************
*** 189,198 ****
  }
  
  /*ARGSUSED*/
! rip_usrreq(so, req, m, nam, rights, control)
  	register struct socket *so;
  	int req;
! 	struct mbuf *m, *nam, *rights, *control;
  {
  	register int error = 0;
  	register struct raw_inpcb *rp = sotorawinpcb(so);
--- 189,198 ----
  }
  
  /*ARGSUSED*/
! rip_usrreq(so, req, m, nam, control)
  	register struct socket *so;
  	int req;
! 	struct mbuf *m, *nam, *control;
  {
  	register int error = 0;
  	register struct raw_inpcb *rp = sotorawinpcb(so);