From owner-svn-src-all@FreeBSD.ORG Sun Mar 24 04:09:54 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E6508C21; Sun, 24 Mar 2013 04:09:54 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id DA45AAF6; Sun, 24 Mar 2013 04:09:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r2O49seN013115; Sun, 24 Mar 2013 04:09:54 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r2O49sRg013114; Sun, 24 Mar 2013 04:09:54 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201303240409.r2O49sRg013114@svn.freebsd.org> From: Adrian Chadd Date: Sun, 24 Mar 2013 04:09:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r248676 - head/sys/dev/ath X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Mar 2013 04:09:55 -0000 Author: adrian Date: Sun Mar 24 04:09:54 2013 New Revision: 248676 URL: http://svnweb.freebsd.org/changeset/base/248676 Log: Move the TXQ lock earlier in this routine - so to correctly protect the link pointer check. Modified: head/sys/dev/ath/if_ath_tx.c Modified: head/sys/dev/ath/if_ath_tx.c ============================================================================== --- head/sys/dev/ath/if_ath_tx.c Sun Mar 24 04:09:29 2013 (r248675) +++ head/sys/dev/ath/if_ath_tx.c Sun Mar 24 04:09:54 2013 (r248676) @@ -702,6 +702,8 @@ ath_tx_handoff_mcast(struct ath_softc *s KASSERT((bf->bf_flags & ATH_BUF_BUSY) == 0, ("%s: busy status 0x%x", __func__, bf->bf_flags)); + + ATH_TXQ_LOCK(txq); if (txq->axq_link != NULL) { struct ath_buf *last = ATH_TXQ_LAST(txq, axq_q_s); struct ieee80211_frame *wh; @@ -715,7 +717,6 @@ ath_tx_handoff_mcast(struct ath_softc *s /* link descriptor */ *txq->axq_link = bf->bf_daddr; } - ATH_TXQ_LOCK(txq); ATH_TXQ_INSERT_TAIL(txq, bf, bf_list); ath_hal_gettxdesclinkptr(sc->sc_ah, bf->bf_lastds, &txq->axq_link); ATH_TXQ_UNLOCK(txq);