diff --git a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_aironet_ieee.h b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_aironet_ieee.h index 95a1f49321..beb8a9c3a3 100644 --- a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_aironet_ieee.h +++ b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_aironet_ieee.h @@ -31,7 +31,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: releng/12.0/sys/dev/an/if_aironet_ieee.h 325966 2017-11-18 14:26:50Z pfg $ + * $FreeBSD$ */ #ifndef _IF_AIRONET_IEEE_H @@ -152,7 +152,6 @@ struct an_rssi_entry { u_int8_t an_rss_dbm; }; - struct an_ltv_key { u_int16_t an_len; u_int16_t an_type; @@ -642,7 +641,6 @@ struct an_rxframe { u_int8_t an_gaplen; /* 0x32 */ } __packed; - /* Do not modify this unless you are modifying LEAP itself */ #define LEAP_USERNAME_MAX 32 #define LEAP_PASSWORD_MAX 32 diff --git a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an.c b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an.c index 103049ec8a..205514bf07 100644 --- a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an.c +++ b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an.c @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: releng/12.0/sys/dev/an/if_an.c 331797 2018-03-30 18:50:13Z brooks $"); +__FBSDID("$FreeBSD$"); /* * The Aironet 4500/4800 series cards come in PCMCIA, ISA and PCI form. @@ -206,7 +206,7 @@ static char an_conf_cache[256]; /* sysctl vars */ -static SYSCTL_NODE(_hw, OID_AUTO, an, CTLFLAG_RD, 0, +static SYSCTL_NODE(_hw, OID_AUTO, an, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "Wireless driver parameters"); /* XXX violate ethernet/netgraph callback hooks */ @@ -266,8 +266,10 @@ sysctl_an_dump(SYSCTL_HANDLER_ARGS) return error; } -SYSCTL_PROC(_hw_an, OID_AUTO, an_dump, CTLTYPE_STRING | CTLFLAG_RW, - 0, sizeof(an_conf), sysctl_an_dump, "A", ""); +SYSCTL_PROC(_hw_an, OID_AUTO, an_dump, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, 0, sizeof(an_conf), + sysctl_an_dump, "A", + ""); static int sysctl_an_cache_mode(SYSCTL_HANDLER_ARGS) @@ -302,8 +304,10 @@ sysctl_an_cache_mode(SYSCTL_HANDLER_ARGS) return error; } -SYSCTL_PROC(_hw_an, OID_AUTO, an_cache_mode, CTLTYPE_STRING | CTLFLAG_RW, - 0, sizeof(an_conf_cache), sysctl_an_cache_mode, "A", ""); +SYSCTL_PROC(_hw_an, OID_AUTO, an_cache_mode, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, 0, sizeof(an_conf_cache), + sysctl_an_cache_mode, "A", + ""); /* * We probe for an Aironet 4500/4800 card by attempting to @@ -1255,7 +1259,6 @@ an_intr(void *xsc) return; } - static int an_cmd_struct(struct an_softc *sc, struct an_command *cmd, struct an_reply *reply) @@ -1568,7 +1571,6 @@ an_write_record(struct an_softc *sc, struct an_ltv_gen *ltv) return(EIO); } - if (reply.an_status & AN_CMD_QUAL_MASK) { if_printf(sc->an_ifp, "failed to write RID 2 %x %x %x %x %x, %d\n", @@ -1838,7 +1840,6 @@ an_setdef(struct an_softc *sc, struct an_req *areq) return; } - /* Reinitialize the card. */ if (ifp->if_flags) an_init_locked(sc); @@ -1875,6 +1876,7 @@ an_ioctl(struct ifnet *ifp, u_long command, caddr_t data) int len; int i, max; struct an_softc *sc; + struct an_req *areq; struct ifreq *ifr; struct thread *td = curthread; struct ieee80211req *ireq; @@ -1934,17 +1936,21 @@ an_ioctl(struct ifnet *ifp, u_long command, caddr_t data) error = 0; break; case SIOCGAIRONET: - error = copyin(ifr_data_get_ptr(ifr), &sc->areq, - sizeof(sc->areq)); - if (error != 0) + error = priv_check(td, PRIV_DRIVER); + if (error) break; + areq = malloc(sizeof(*areq), M_TEMP, M_WAITOK); + error = copyin(ifr_data_get_ptr(ifr), areq, sizeof(*areq)); + if (error != 0) { + free(areq, M_TEMP); + break; + } AN_LOCK(sc); + memcpy(&sc->areq, areq, sizeof(sc->areq)); #ifdef ANCACHE if (sc->areq.an_type == AN_RID_ZERO_CACHE) { - error = priv_check(td, PRIV_DRIVER); - if (error) - break; sc->an_sigitems = sc->an_nextitem = 0; + free(areq, M_TEMP); break; } else if (sc->areq.an_type == AN_RID_READ_CACHE) { char *pt = (char *)&sc->areq.an_val; @@ -1960,12 +1966,14 @@ an_ioctl(struct ifnet *ifp, u_long command, caddr_t data) #endif if (an_read_record(sc, (struct an_ltv_gen *)&sc->areq)) { AN_UNLOCK(sc); + free(areq, M_TEMP); error = EINVAL; break; } + memcpy(areq, &sc->areq, sizeof(*areq)); AN_UNLOCK(sc); - error = copyout(&sc->areq, ifr_data_get_ptr(ifr), - sizeof(sc->areq)); + error = copyout(areq, ifr_data_get_ptr(ifr), sizeof(*areq)); + free(areq, M_TEMP); break; case SIOCSAIRONET: if ((error = priv_check(td, PRIV_DRIVER))) @@ -2313,7 +2321,7 @@ an_ioctl(struct ifnet *ifp, u_long command, caddr_t data) } break; case SIOCS80211: - if ((error = priv_check(td, PRIV_NET80211_MANAGE))) + if ((error = priv_check(td, PRIV_NET80211_VAP_MANAGE))) goto out; AN_LOCK(sc); sc->areq.an_len = sizeof(sc->areq); @@ -2856,7 +2864,6 @@ an_start_locked(struct ifnet *ifp) bcopy((caddr_t)&sc->an_txbuf, &buf[0x44], tx_frame_802_3.an_tx_802_3_payload_len); - bzero(&an_tx_desc, sizeof(an_tx_desc)); an_tx_desc.an_offset = 0; an_tx_desc.an_eoc = 1; @@ -3033,7 +3040,6 @@ int an_sigitems; /* number of cached entries */ struct an_sigcache an_sigcache[MAXANCACHE]; /* array of cache entries */ int an_nextitem; /* index/# of entries */ - #endif /* control variables for cache filtering. Basic idea is @@ -3131,7 +3137,6 @@ an_cache_store(struct an_softc *sc, struct ether_header *eh, struct mbuf *m, * if table full, then we need to replace LRU entry */ else { - /* check for space in cache table * note: an_nextitem also holds number of entries * added in the cache table @@ -3172,7 +3177,6 @@ an_cache_store(struct an_softc *sc, struct ether_header *eh, struct mbuf *m, } bcopy( eh->ether_shost, sc->an_sigcache[cache_slot].macsrc, 6); - switch (an_cache_mode) { case DBM: if (sc->an_have_rssimap) { @@ -3542,7 +3546,6 @@ cmdreset(struct ifnet *ifp) FLASH_DELAY(sc, 1000); /* WAS 600 12/7/00 */ - if (!(status = WaitBusy(ifp, 100))) { if_printf(ifp, "Waitbusy hang AFTER RESET =%d\n", status); AN_UNLOCK(sc); @@ -3592,7 +3595,6 @@ flashgchar(struct ifnet *ifp, int matchbyte, int dwelltime) int success = -1; struct an_softc *sc = ifp->if_softc; - do { rchar = CSR_READ_2(sc, AN_SW1(sc->mpi350)); @@ -3665,7 +3667,6 @@ flashpchar(struct ifnet *ifp, int byte, int dwelltime) echo = CSR_READ_2(sc, AN_SW1(sc->mpi350)); } while (dwelltime >= 0 && echo != byte); - CSR_WRITE_2(sc, AN_SW1(sc->mpi350), 0); return echo == byte; diff --git a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_isa.c b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_isa.c index d1d42d9307..627bfaa04e 100644 --- a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_isa.c +++ b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_isa.c @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: releng/12.0/sys/dev/an/if_an_isa.c 327102 2017-12-23 06:49:27Z imp $"); +__FBSDID("$FreeBSD$"); #include "opt_inet.h" diff --git a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pccard.c b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pccard.c index 39819a263b..0fce226ae0 100644 --- a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pccard.c +++ b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pccard.c @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: releng/12.0/sys/dev/an/if_an_pccard.c 325966 2017-11-18 14:26:50Z pfg $"); +__FBSDID("$FreeBSD$"); #include "opt_inet.h" @@ -88,7 +88,6 @@ static device_method_t an_pccard_methods[] = { DEVMETHOD(device_attach, an_pccard_attach), DEVMETHOD(device_detach, an_detach), DEVMETHOD(device_shutdown, an_shutdown), - { 0, 0 } }; diff --git a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pci.c b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pci.c index 2d58a587c7..c43de82ed6 100644 --- a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pci.c +++ b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_an_pci.c @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: releng/12.0/sys/dev/an/if_an_pci.c 338948 2018-09-26 17:12:14Z imp $"); +__FBSDID("$FreeBSD$"); /* * This is a PCI shim for the Aironet PC4500/4800 wireless network diff --git a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_anreg.h b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_anreg.h index bbf0a757ad..dd2127b6e2 100644 --- a/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_anreg.h +++ b/src/add-ons/kernel/drivers/network/wlan/aironetwifi/dev/an/if_anreg.h @@ -31,7 +31,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: releng/12.0/sys/dev/an/if_anreg.h 325966 2017-11-18 14:26:50Z pfg $ + * $FreeBSD$ */ #define AN_TIMEOUT 65536 @@ -354,7 +354,6 @@ struct an_rxframe_802_3 { }; #define AN_RXGAP_MAX 8 - struct an_txframe_802_3 { /* * Transmit 802.3 header structure.