diff options
author | adrian <adrian@FreeBSD.org> | 2014-08-21 00:57:32 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2014-08-21 00:57:32 +0000 |
commit | 5a060fa7839ed3be38abc8f964e12e79ec18cd11 (patch) | |
tree | 0531fc05c9560bd9344fc2e62873d4c1dabb8f7b /sys/dev/ep | |
parent | 0789e26a48a8221cdc72b9fed374581cfb429c17 (diff) | |
download | FreeBSD-src-5a060fa7839ed3be38abc8f964e12e79ec18cd11.zip FreeBSD-src-5a060fa7839ed3be38abc8f964e12e79ec18cd11.tar.gz |
Add missing locking.
Whilst here, assert that the lock is held when calling epstop().
Tested:
ep0: <3com Megahertz 574B>
Diffstat (limited to 'sys/dev/ep')
-rw-r--r-- | sys/dev/ep/if_ep.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/dev/ep/if_ep.c b/sys/dev/ep/if_ep.c index 863c545..74c6a86 100644 --- a/sys/dev/ep/if_ep.c +++ b/sys/dev/ep/if_ep.c @@ -343,7 +343,9 @@ ep_attach(struct ep_softc *sc) EP_FSET(sc, F_RX_FIRST); sc->top = sc->mcur = 0; + EP_LOCK(sc); epstop(sc); + EP_UNLOCK(sc); return (0); } @@ -1000,6 +1002,9 @@ epwatchdog(struct ep_softc *sc) static void epstop(struct ep_softc *sc) { + + EP_ASSERT_LOCKED(sc); + CSR_WRITE_2(sc, EP_COMMAND, RX_DISABLE); CSR_WRITE_2(sc, EP_COMMAND, RX_DISCARD_TOP_PACK); EP_BUSY_WAIT(sc); |