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 */
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to