diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -66,7 +66,6 @@ #include #include #include -#include #include #ifdef DDB @@ -262,26 +261,10 @@ * In all three cases the tcptw should not be freed here. */ if (inp->inp_flags & INP_DROPPED) { + KASSERT(tp == NULL, ("tcp_detach: INP_TIMEWAIT && " + "INP_DROPPED && tp != NULL")); in_pcbdetach(inp); - if (__predict_true(tp == NULL)) { - in_pcbfree(inp); - } else { - /* - * This case should not happen as in TIMEWAIT - * state the inp should not be destroyed before - * its tcptw. If INVARIANTS is defined, panic. - */ -#ifdef INVARIANTS - panic("%s: Panic before an inp double-free: " - "INP_TIMEWAIT && INP_DROPPED && tp != NULL" - , __func__); -#else - log(LOG_ERR, "%s: Avoid an inp double-free: " - "INP_TIMEWAIT && INP_DROPPED && tp != NULL" - , __func__); -#endif - INP_WUNLOCK(inp); - } + in_pcbfree(inp); } else { in_pcbdetach(inp); INP_WUNLOCK(inp);