svn commit: r290427 - head/sys/dev/iwn

Andriy Voskoboinyk avos at FreeBSD.org
Thu Nov 5 22:44:38 UTC 2015


Author: avos
Date: Thu Nov  5 22:44:36 2015
New Revision: 290427
URL: https://svnweb.freebsd.org/changeset/base/290427

Log:
  iwn(4): various simple fixes
  
  - Fix mbuf leaks in iwn_raw_xmit() and iwn_xmit_task()
  (regression since r288178).
  - Check IWN_FLAG_RUNNING flag under lock.
  - Remove m->m_pkthdr.rcvif initialization (fixed in r283994).
  - Enclose some values in return statements into parentheses.
  
  Approved by:	adrian (mentor)
  Differential Revision:	https://reviews.freebsd.org/D4069

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Thu Nov  5 22:42:40 2015	(r290426)
+++ head/sys/dev/iwn/if_iwn.c	Thu Nov  5 22:44:36 2015	(r290427)
@@ -4852,6 +4852,7 @@ iwn_xmit_task(void *arg0, int pending)
 			if_inc_counter(ni->ni_vap->iv_ifp,
 			    IFCOUNTER_OERRORS, 1);
 			ieee80211_free_node(ni);
+			m_freem(m);
 		}
 	}
 
@@ -4872,16 +4873,13 @@ iwn_raw_xmit(struct ieee80211_node *ni, 
 
 	DPRINTF(sc, IWN_DEBUG_XMIT | IWN_DEBUG_TRACE, "->%s begin\n", __func__);
 
+	IWN_LOCK(sc);
 	if ((sc->sc_flags & IWN_FLAG_RUNNING) == 0) {
 		m_freem(m);
-		return ENETDOWN;
+		IWN_UNLOCK(sc);
+		return (ENETDOWN);
 	}
 
-	/* XXX? net80211 doesn't set this on xmit'ed raw frames? */
-	m->m_pkthdr.rcvif = (void *) ni;
-
-	IWN_LOCK(sc);
-
 	/* queue frame if we have to */
 	if (sc->sc_beacon_wait) {
 		if (iwn_xmit_queue_enqueue(sc, m) != 0) {
@@ -4909,12 +4907,14 @@ iwn_raw_xmit(struct ieee80211_node *ni, 
 	}
 	if (error == 0)
 		sc->sc_tx_timer = 5;
+	else
+		m_freem(m);
 
 	IWN_UNLOCK(sc);
 
 	DPRINTF(sc, IWN_DEBUG_TRACE | IWN_DEBUG_XMIT, "->%s: end\n",__func__);
 
-	return error;
+	return (error);
 }
 
 /*


More information about the svn-src-all mailing list