Missed directory in previous commit; need to hold SOCK_LOCK(so)

before calling sotryfree().

-- Body of earlier bulk commit this belonged with --

  Log:
  Extend coverage of SOCK_LOCK(so) to include so_count, the socket
  reference count:

  - Assert SOCK_LOCK(so) macros that directly manipulate so_count:
    soref(), sorele().

  - Assert SOCK_LOCK(so) in macros/functions that rely on the state of
    so_count: sofree(), sotryfree().

  - Acquire SOCK_LOCK(so) before calling these functions or macros in
    various contexts in the stack, both at the socket and protocol
    layers.

  - In some cases, perform soisdisconnected() before sotryfree(), as
    this could result in frobbing of a non-present socket if
    sotryfree() actually frees the socket.

  - Note that sofree()/sotryfree() will release the socket lock even if
    they don't free the socket.

  Submitted by:   sam
  Sponsored by:   FreeBSD Foundation
  Obtained from:  BSD/OS
This commit is contained in:
Robert Watson 2004-06-12 20:59:48 +00:00
parent 395a08c904
commit 359fdba7a7

View File

@ -438,6 +438,7 @@ in6_pcbdetach(inp)
in_pcbremlists(inp);
if (so) {
SOCK_LOCK(so);
so->so_pcb = NULL;
sotryfree(so);
}