diff options
author | rwatson <rwatson@FreeBSD.org> | 2006-08-02 18:37:44 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2006-08-02 18:37:44 +0000 |
commit | 774fbf773647291ff95c92284f46c14766a97e89 (patch) | |
tree | 65c21b0a8af84bf3478b0decf22b8d780e51c936 | |
parent | 2d4a8e480d5d2e97e89205efce6273493e7d289c (diff) | |
download | FreeBSD-src-774fbf773647291ff95c92284f46c14766a97e89.zip FreeBSD-src-774fbf773647291ff95c92284f46c14766a97e89.tar.gz |
Move destroying kqueue state from above pru_detach to below it in
sofree(), as a number of protocols expect to be able to call
soisdisconnected() during detach. That may not be a good assumption,
but until I'm sure if it's a good assumption or not, allow it.
-rw-r--r-- | sys/kern/uipc_socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 41b9baa..882ecfd 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -608,10 +608,10 @@ sofree(so) if (pr->pr_flags & PR_RIGHTS && pr->pr_domain->dom_dispose != NULL) (*pr->pr_domain->dom_dispose)(so->so_rcv.sb_mb); sbdestroy(&so->so_rcv, so); - knlist_destroy(&so->so_rcv.sb_sel.si_note); - knlist_destroy(&so->so_snd.sb_sel.si_note); if (pr->pr_usrreqs->pru_detach != NULL) (*pr->pr_usrreqs->pru_detach)(so); + knlist_destroy(&so->so_rcv.sb_sel.si_note); + knlist_destroy(&so->so_snd.sb_sel.si_note); sodealloc(so); } |