diff options
author | Pyun YongHyeon <yongari@FreeBSD.org> | 2011-10-17 19:49:00 +0000 |
---|---|---|
committer | Pyun YongHyeon <yongari@FreeBSD.org> | 2011-10-17 19:49:00 +0000 |
commit | 57c81d92aecb49b57e84691af0306d24ded3754a (patch) | |
tree | d177532a5533584316ef20ec33ef25a4e8e17cac /sys/dev/vr/if_vr.c | |
parent | a906bdb04de03ada719aaba2174cb1ecd0f62615 (diff) | |
download | src-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/vr/if_vr.c')
-rw-r--r-- | sys/dev/vr/if_vr.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c index 94e7b4ae59c2..0bcef0ed9d48 100644 --- a/sys/dev/vr/if_vr.c +++ b/sys/dev/vr/if_vr.c @@ -2155,9 +2155,9 @@ vr_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) return; } mii_pollstat(mii); - VR_UNLOCK(sc); ifmr->ifm_active = mii->mii_media_active; ifmr->ifm_status = mii->mii_media_status; + VR_UNLOCK(sc); } static int |