syncache_socket(): fix abort path by calling pru_abort directly
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Thu, 22 Jan 2009 09:13:20 +0000 (17:13 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sat, 31 Jan 2009 06:22:21 +0000 (14:22 +0800)
commitfd86a41c7ed1881bb55e1ad5c825daf2f245a8b6
treee930f0a547f73bc853367ef9605b31f3642d1e37
parent9bf066627ae362591814e78ac2cc84efef54a673
syncache_socket(): fix abort path by calling pru_abort directly

On syncache_socket() abort path, the inp's {fport,lport,faddr,laddr}
is either incomplete or half destroyed, which causes tcp_soport()
mapping the socket to a wrong CPU.  However, in syncache code, inp
is only accessed or created by its owner CPU, i.e. we are already on
the inp's owner CPU during the socket aborting.

Add soabort_oncpu(), which calls pru_abort directly.  Use it on
syncache_socket() abort path.
sys/kern/uipc_msg.c
sys/kern/uipc_socket.c
sys/netinet/tcp_syncache.c
sys/sys/socketops.h
sys/sys/socketvar.h