diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2019-10-10 23:55:33 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2019-10-10 23:55:33 +0000 |
commit | 2b60ecf197e0e187ac028d66d279805e6bece77b (patch) | |
tree | 19ab27384b3a74ab2fed99bb837a1df4cdc0bf59 /sys/net80211 | |
parent | 45c1d51c395e57e78c3ad16ee48a7bc0d0c3d06b (diff) | |
download | src-2b60ecf197e0e187ac028d66d279805e6bece77b.tar.gz src-2b60ecf197e0e187ac028d66d279805e6bece77b.zip |
Don't use if_maddr_rlock() in 802.11, use epoch(9) directly instead.
Notes
Notes:
svn path=/head/; revision=353427
Diffstat (limited to 'sys/net80211')
-rw-r--r-- | sys/net80211/ieee80211_ioctl.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c index 6ef5f9fb2b75..2798657d874f 100644 --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -3583,6 +3583,8 @@ ieee80211_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) IEEE80211_UNLOCK(ic); /* Wait for parent ioctl handler if it was queued */ if (wait) { + struct epoch_tracker et; + ieee80211_waitfor_parent(ic); /* @@ -3592,13 +3594,13 @@ ieee80211_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) * NB: device may be detached during initialization; * use if_ioctl for existence check. */ - if_addr_rlock(ifp); + NET_EPOCH_ENTER(et); if (ifp->if_ioctl == ieee80211_ioctl && (ifp->if_flags & IFF_UP) == 0 && !IEEE80211_ADDR_EQ(vap->iv_myaddr, IF_LLADDR(ifp))) IEEE80211_ADDR_COPY(vap->iv_myaddr, IF_LLADDR(ifp)); - if_addr_runlock(ifp); + NET_EPOCH_EXIT(et); } break; case SIOCADDMULTI: |