From owner-p4-projects@FreeBSD.ORG Wed Feb 13 16:52:01 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A19FD16A418; Wed, 13 Feb 2008 16:52:01 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 668D716A421 for ; Wed, 13 Feb 2008 16:52:01 +0000 (UTC) (envelope-from swise@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5F4F413C447 for ; Wed, 13 Feb 2008 16:52:01 +0000 (UTC) (envelope-from swise@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m1DGq1Re006471 for ; Wed, 13 Feb 2008 16:52:01 GMT (envelope-from swise@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m1DGq1lw006468 for perforce@freebsd.org; Wed, 13 Feb 2008 16:52:01 GMT (envelope-from swise@FreeBSD.org) Date: Wed, 13 Feb 2008 16:52:01 GMT Message-Id: <200802131652.m1DGq1lw006468@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to swise@FreeBSD.org using -f From: Steve Wise To: Perforce Change Reviews Cc: Subject: PERFORCE change 135327 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 16:52:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=135327 Change 135327 by swise@swise:vic10:iwarp on 2008/02/13 16:51:46 Always call t3_send_reset() with inp lock held. Affected files ... .. //depot/projects/iwarp/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#12 edit Differences ... ==== //depot/projects/iwarp/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#12 (text+ko) ==== @@ -2349,7 +2349,7 @@ struct toepcb *toep = tp->t_toe; int keep = 0; - DPRINTF("do_peer_fin state=%d dead=%d\n", tp->t_state, !!dead); + DPRINTF("do_peer_fin state=%d\n", tp->t_state); #ifdef T3_TRACE T3_TRACE0(TIDTB(sk),"do_peer_fin:"); @@ -2360,13 +2360,16 @@ goto out; } + INP_INFO_WLOCK(&tcbinfo); + INP_LOCK(tp->t_inpcb); if (toep->tp_ulp_mode == ULP_MODE_TCPDDP) { keep = handle_peer_close_data(so, m); - if (keep < 0) + if (keep < 0) { + INP_INFO_WUNLOCK(&tcbinfo); + INP_UNLOCK(tp->t_inpcb); return; + } } - INP_INFO_WLOCK(&tcbinfo); - INP_LOCK(tp->t_inpcb); if (TCPS_HAVERCVDFIN(tp->t_state) == 0) socantrcvmore(so); switch (tp->t_state) {