git: tcp: Fix upper half (socket code) and so_port switching race.

Sepherosa Ziehau sephe at crater.dragonflybsd.org
Sun Aug 10 05:36:55 PDT 2014


commit cfc92b211902c0623f72da35d19127eb281f9ffe
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date:   Sun Aug 10 20:22:12 2014 +0800

    tcp: Fix upper half (socket code) and so_port switching race.
    
    Use message put done receipt to change this socket's so_port, i.e. _after_
    this message was put onto the target netisr's msgport but _before_ the
    message could be pulled from the target netisr's msgport, so that:
    - The upper half (socket code) will not see the new msgport before this
      message reaches the new msgport and messages for this socket will be
      ordered.
    - This message will see the new msgport, when its handler is called in the
      target netisr.
    
    Add comment about it and explain why the so_port switching should be done
    in this commit's fashion.
    
    Reported-by: dillon@

Summary of changes:
 sys/netinet/tcp_usrreq.c | 62 +++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 56 insertions(+), 6 deletions(-)

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


-- 
DragonFly BSD source repository



More information about the Commits mailing list