diff options
author | yongari <yongari@FreeBSD.org> | 2011-11-16 22:09:14 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2011-11-16 22:09:14 +0000 |
commit | 6fccac0389344a3f78dda28b1ef6e281478b64a1 (patch) | |
tree | a26a52b8d498d24335ed6b14aec9d663b72724bc /sys/dev | |
parent | c0296e4e57fcd0f0ed7f81c76003bd877cd630e3 (diff) | |
download | FreeBSD-src-6fccac0389344a3f78dda28b1ef6e281478b64a1.zip FreeBSD-src-6fccac0389344a3f78dda28b1ef6e281478b64a1.tar.gz |
Add missing driver lock in SIOCSIFCAP handler.
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/re/if_re.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c index 90b23ed..621cc0e 100644 --- a/sys/dev/re/if_re.c +++ b/sys/dev/re/if_re.c @@ -3312,6 +3312,7 @@ re_ioctl(struct ifnet *ifp, u_long command, caddr_t data) } } #endif /* DEVICE_POLLING */ + RL_LOCK(sc); if ((mask & IFCAP_TXCSUM) != 0 && (ifp->if_capabilities & IFCAP_TXCSUM) != 0) { ifp->if_capenable ^= IFCAP_TXCSUM; @@ -3370,8 +3371,9 @@ re_ioctl(struct ifnet *ifp, u_long command, caddr_t data) } if (reinit && ifp->if_drv_flags & IFF_DRV_RUNNING) { ifp->if_drv_flags &= ~IFF_DRV_RUNNING; - re_init(sc); + re_init_locked(sc); } + RL_UNLOCK(sc); VLAN_CAPABILITIES(ifp); } break; |