use of V_tcbinfo lock for TCP syncache
Vijay Singh
vijju.singh at gmail.com
Wed Dec 19 19:31:09 UTC 2012
As it is today, a socket upcall on a listener socket is made with the
V_tcbinfo lock held. [tcp_input -> syncache_socket -> sonewconn ->
sowakeup].
I feel that the use of the V_tcbinfo is not consistent in the syncache code.
In syncache_add(), we drop the lock before doing the lookup:
INP_WUNLOCK(inp);
INP_INFO_WUNLOCK(&V_tcbinfo);
[..snip..]
sc = syncache_lookup(inc, &sch); /* returns locked entry */
However, when going through syncache_expand() or syncache_chkrst() we
keep the V_tcbinfo lock.
Since the syncache has its own lock, do we need to hold the V_tcbinfo
lock when calling syncache_socket()?
If there are ideas, or patches, I can give them a try.
-vijay
More information about the freebsd-net
mailing list