DragonFly-2.1.1.480.gfd86a master sys/kern uipc_msg.c uipc_socket.c sys/netinet tcp_syncache.c sys/sys socketops.h socketvar.h

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Fri Jan 30 22:31:00 PST 2009


commit fd86a41c7ed1881bb55e1ad5c825daf2f245a8b6
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Thu Jan 22 17:13:20 2009 +0800

    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.

Summary of changes:
 sys/kern/uipc_msg.c        |   12 ++++++++++++
 sys/kern/uipc_socket.c     |    9 +++++++++
 sys/netinet/tcp_syncache.c |    2 +-
 sys/sys/socketops.h        |    1 +
 sys/sys/socketvar.h        |    1 +
 5 files changed, 24 insertions(+), 1 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/fd86a41c7ed1881bb55e1ad5c825daf2f245a8b6


-- 
DragonFly BSD source repository





More information about the Commits mailing list