From owner-p4-projects@FreeBSD.ORG Fri Feb 23 23:58:02 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A53CB16A405; Fri, 23 Feb 2007 23:58:02 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4C71216A403 for ; Fri, 23 Feb 2007 23:58:02 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3CEF513C491 for ; Fri, 23 Feb 2007 23:58:02 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l1NNw17j038113 for ; Fri, 23 Feb 2007 23:58:02 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l1NNw1m3038110 for perforce@freebsd.org; Fri, 23 Feb 2007 23:58:01 GMT (envelope-from sam@freebsd.org) Date: Fri, 23 Feb 2007 23:58:01 GMT Message-Id: <200702232358.l1NNw1m3038110@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 114934 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: Fri, 23 Feb 2007 23:58:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=114934 Change 114934 by sam@sam_ebb on 2007/02/23 23:57:19 Correct refcnt handling for sending a null data frame; looks to have been mis-merged a while ago. Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_output.c#65 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_output.c#65 (text+ko) ==== @@ -339,6 +339,10 @@ /* * Send a null data frame to the specified node. + * + * NB: the caller is assumed to have setup a node reference + * for use; this is necessary to deal with a race condition + * when probing for inactive stations. */ int ieee80211_send_nulldata(struct ieee80211_node *ni) @@ -351,10 +355,11 @@ MGETHDR(m, M_NOWAIT, MT_DATA); if (m == NULL) { /* XXX debug msg */ + ieee80211_unref_node(&ni); ic->ic_stats.is_tx_nobuf++; return ENOMEM; } - m->m_pkthdr.rcvif = (void *) ieee80211_ref_node(ni); + m->m_pkthdr.rcvif = (void *) ni; wh = mtod(m, struct ieee80211_frame *); ieee80211_send_setup(ic, ni, wh,