summaryrefslogtreecommitdiffstats
path: root/sys/mips/idt
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2011-10-17 19:49:00 +0000
committeryongari <yongari@FreeBSD.org>2011-10-17 19:49:00 +0000
commit4c371e596be040085df1b5f9e469ab9fd8278c89 (patch)
treed177532a5533584316ef20ec33ef25a4e8e17cac /sys/mips/idt
parent56e15a778cfacd77cc855073167c952c91381994 (diff)
downloadFreeBSD-src-4c371e596be040085df1b5f9e469ab9fd8278c89.zip
FreeBSD-src-4c371e596be040085df1b5f9e469ab9fd8278c89.tar.gz
Close a race where SIOCGIFMEDIA ioctl get inconsistent link status.
Because driver is accessing a common MII structure in mii_pollstat(), updating user supplied structure should be done before dropping a driver lock. Reported by: Karim (fodillemlinkarimi <> gmail dot com)
Diffstat (limited to 'sys/mips/idt')
-rw-r--r--sys/mips/idt/if_kr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/mips/idt/if_kr.c b/sys/mips/idt/if_kr.c
index 43b8df5..243968d 100644
--- a/sys/mips/idt/if_kr.c
+++ b/sys/mips/idt/if_kr.c
@@ -945,9 +945,9 @@ kr_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
mii = device_get_softc(sc->kr_miibus);
KR_LOCK(sc);
mii_pollstat(mii);
- KR_UNLOCK(sc);
ifmr->ifm_active = mii->mii_media_active;
ifmr->ifm_status = mii->mii_media_status;
+ KR_UNLOCK(sc);
}
struct kr_dmamap_arg {
OpenPOWER on IntegriCloud