cvs commit: src/sys/netinet tcp_usrreq.c

看板DFBSD_commit作者時間21年前 (2005/04/05 14:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
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@theshell.com> 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
文章代碼(AID): #12KYcj00 (DFBSD_commit)
文章代碼(AID): #12KYcj00 (DFBSD_commit)