Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jun 2001 05:07:29 -0700 (PDT)
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/netinet in_pcb.c
Message-ID:  <200106291207.f5TC7T051566@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
ru          2001/06/29 05:07:29 PDT

  Modified files:
    sys/netinet          in_pcb.c 
  Log:
  Backout CSRG revision 7.22 to this file (if in_losing notices an
  RTF_DYNAMIC route, it got freed twice).  I am not sure what was
  the actual problem in 1992, but the current behavior is memory
  leak if PCB holds a reference to a dynamically created/modified
  routing table entry.  (rt_refcnt>0 and we don't call rtfree().)
  
  My test bed was:
  
  1.  Set net.inet.tcp.msl to a low value (for test purposes), e.g.,
      5 seconds, to speed up the transition of TCP connection to a
      "closed" state.
  2.  Add a network route which causes ICMP redirect from the gateway.
  3.  ping(8) host H that matches this route; this creates RTF_DYNAMIC
      RTF_HOST route to H.  (I was forced to use ICMP to cause gateway
      to generate ICMP host redirect, because gateway in question is a
      4.2-STABLE system vulnerable to a problem that was fixed later in
      ip_icmp.c,v 1.39.2.6, and TCP packets with DF bit set were
      triggering this bug.)
  4.  telnet(1) to H
  5.  Block access to H with ipfw(8)
  6.  Send something in telnet(1) session; this causes EPERM, followed
      by an in_losing() call in a few seconds.
  7.  Delete ipfw(8) rule blocking access to H, and wait for TCP
      connection moving to a CLOSED state; PCB is freed.
  8.  Delete host route to H.
  9.  Watch with netstat(1) that `rttrash' increased.
  10. Repeat steps 3-9, and watch `rttrash' increases.
  
  PR:		kern/25421
  MFC after:	2 weeks
  
  Revision  Changes    Path
  1.85      +3 -4      src/sys/netinet/in_pcb.c


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200106291207.f5TC7T051566>