diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 2005-01-06 23:13:50 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2005-01-06 23:13:50 +0000 |
commit | c884a1dc23c079b7a2c961b98b9a56dd4ed2c541 (patch) | |
tree | 8f49a824b9cdddbb96902a1f2ea00ac84e365361 /sys | |
parent | 86cb007f9f53a618310e56ff967339221197b416 (diff) | |
download | src-c884a1dc23c079b7a2c961b98b9a56dd4ed2c541.tar.gz src-c884a1dc23c079b7a2c961b98b9a56dd4ed2c541.zip |
Close a theoretical race: By the time the watchdog comes around
the interface may have been stopped, so we should not restart it.
Notes
Notes:
svn path=/head/; revision=139797
Diffstat (limited to 'sys')
-rw-r--r-- | sys/pci/if_sis.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/pci/if_sis.c b/sys/pci/if_sis.c index a933173b2587..e257db3510f9 100644 --- a/sys/pci/if_sis.c +++ b/sys/pci/if_sis.c @@ -2235,11 +2235,15 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data) static void sis_watchdog(struct ifnet *ifp) { - struct sis_softc *sc; + struct sis_softc *sc; sc = ifp->if_softc; SIS_LOCK(sc); + if (sc->sis_stopped) { + SIS_UNLOCK(sc); + return; + } ifp->if_oerrors++; printf("sis%d: watchdog timeout\n", sc->sis_unit); |