diff options
author | rwatson <rwatson@FreeBSD.org> | 2009-04-23 13:08:47 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2009-04-23 13:08:47 +0000 |
commit | 471539dc8f7f8952bce906c2f71708c614007fcb (patch) | |
tree | 07704a61b3ff63c25404fa737cb3b0b0ec78c6af /sys/netinet6/ip6_input.c | |
parent | ccc05d4c7fc358ca3cc8339274b58835f1ba153b (diff) | |
download | FreeBSD-src-471539dc8f7f8952bce906c2f71708c614007fcb.zip FreeBSD-src-471539dc8f7f8952bce906c2f71708c614007fcb.tar.gz |
Add ifunit_ref(), a version of ifunit(), that returns not just an
interface pointer, but also a reference to it.
Modify ifioctl() to use ifunit_ref(), holding the reference until
all ioctls, etc, have completed.
This closes a class of reader-writer races in which interfaces
could be removed during long-running ioctls, leading to crashes.
Many other consumers of ifunit() should now use ifunit_ref() to
avoid similar races.
MFC after: 3 weeks
Diffstat (limited to 'sys/netinet6/ip6_input.c')
0 files changed, 0 insertions, 0 deletions