aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/nfe
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2011-10-17 19:49:00 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2011-10-17 19:49:00 +0000
commit57c81d92aecb49b57e84691af0306d24ded3754a (patch)
treed177532a5533584316ef20ec33ef25a4e8e17cac /sys/dev/nfe
parenta906bdb04de03ada719aaba2174cb1ecd0f62615 (diff)
downloadsrc-57c81d92aecb49b57e84691af0306d24ded3754a.tar.gz
src-57c81d92aecb49b57e84691af0306d24ded3754a.zip
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)
Notes
Notes: svn path=/head/; revision=226478
Diffstat (limited to 'sys/dev/nfe')
-rw-r--r--sys/dev/nfe/if_nfe.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/nfe/if_nfe.c b/sys/dev/nfe/if_nfe.c
index 28a3c0149f29..3c36fe703b7d 100644
--- a/sys/dev/nfe/if_nfe.c
+++ b/sys/dev/nfe/if_nfe.c
@@ -2952,10 +2952,10 @@ nfe_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
NFE_LOCK(sc);
mii = device_get_softc(sc->nfe_miibus);
mii_pollstat(mii);
- NFE_UNLOCK(sc);
ifmr->ifm_active = mii->mii_media_active;
ifmr->ifm_status = mii->mii_media_status;
+ NFE_UNLOCK(sc);
}