cvs commit: src/sys/netinet tcp_usrreq.c

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Apr 4 22:44:29 PDT 2005


dillon      2005/04/04 22:43:05 PDT

DragonFly src repository

  Modified files:
    sys/netinet          tcp_usrreq.c 
  Log:
  Fix a bug in the distributed PCB wildcardhash code for TCP.   For the SMP
  case both the INP_WILDCARD and INP_WILDCARD_MP flags must be set.  The
  insertion code was calling in_pcbinswildcardhash_oncpu() instead of
  in_pcbinswildcardhash() for the current-cpu case, which leaves the
  INP_WILDCARD flag unset.  The wildcard deletion code calls various
  oncpu routines which remove the wildcard from the other cpu's hash
  tables, then finally calls in_pcbdetach()->in_pcbremlist() on the
  originating cpu but this fails to delete the inp because INP_WILDCARD
  was not set.
  
  This bug caused the TCP stack to get seriously confused because wildcard
  entries with stale inp pointers wind up being left in the hash table.
  The bug causes a mix of ignored connection requests (not even an RST),
  refused connection requests, successful connection requests, and crashes.
  
  Reported-by: Peter Avalos <pavalos at xxxxxxxxxxxx>
  
  Revision  Changes    Path
  1.34      +1 -1      src/sys/netinet/tcp_usrreq.c


http://www.dragonflybsd.org/cvsweb/src/sys/netinet/tcp_usrreq.c.diff?r1=1.33&r2=1.34&f=u





More information about the Commits mailing list