Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Apr 2016 21:29:11 +0000 (UTC)
From:      Andriy Voskoboinyk <avos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r297592 - head/sys/net80211
Message-ID:  <201604052129.u35LTBpR055481@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avos
Date: Tue Apr  5 21:29:11 2016
New Revision: 297592
URL: https://svnweb.freebsd.org/changeset/base/297592

Log:
  net80211: copy MAC address into iv_myaddr[] instead of aliasing it.
  
  Since IF_LLADDR() returns a non-constant pointer to the MAC address
  preserve a copy of it in iv_myaddr.
  
  PR:		208505

Modified:
  head/sys/net80211/ieee80211.c
  head/sys/net80211/ieee80211_var.h

Modified: head/sys/net80211/ieee80211.c
==============================================================================
--- head/sys/net80211/ieee80211.c	Tue Apr  5 21:12:03 2016	(r297591)
+++ head/sys/net80211/ieee80211.c	Tue Apr  5 21:29:11 2016	(r297592)
@@ -483,7 +483,7 @@ ieee80211_vap_setup(struct ieee80211com 
 	vap->iv_htextcaps = ic->ic_htextcaps;
 	vap->iv_opmode = opmode;
 	vap->iv_caps |= ieee80211_opcap[opmode];
-	vap->iv_myaddr = ic->ic_macaddr;
+	IEEE80211_ADDR_COPY(vap->iv_myaddr, ic->ic_macaddr);
 	switch (opmode) {
 	case IEEE80211_M_WDS:
 		/*
@@ -603,7 +603,7 @@ ieee80211_vap_attach(struct ieee80211vap
 		ifp->if_baudrate = IF_Mbps(maxrate);
 
 	ether_ifattach(ifp, macaddr);
-	vap->iv_myaddr = IF_LLADDR(ifp);
+	IEEE80211_ADDR_COPY(vap->iv_myaddr, IF_LLADDR(ifp));
 	/* hook output method setup by ether_ifattach */
 	vap->iv_output = ifp->if_output;
 	ifp->if_output = ieee80211_output;

Modified: head/sys/net80211/ieee80211_var.h
==============================================================================
--- head/sys/net80211/ieee80211_var.h	Tue Apr  5 21:12:03 2016	(r297591)
+++ head/sys/net80211/ieee80211_var.h	Tue Apr  5 21:29:11 2016	(r297592)
@@ -362,7 +362,8 @@ struct ieee80211vap {
 
 	TAILQ_ENTRY(ieee80211vap) iv_next;	/* list of vap instances */
 	struct ieee80211com	*iv_ic;		/* back ptr to common state */
-	const uint8_t		*iv_myaddr;	/* MAC address: ifp or ic */
+	/* MAC address: ifp or ic */
+	uint8_t			iv_myaddr[IEEE80211_ADDR_LEN];
 	uint32_t		iv_debug;	/* debug msg flags */
 	struct ieee80211_stats	iv_stats;	/* statistics */
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604052129.u35LTBpR055481>