cvs commit: src/sys/dev/ed if_ed.c if_ed_pccard.c if_edvar.h
M. Warner Losh
imp at bsdimp.com
Mon Sep 19 07:33:45 PDT 2005
In message: <20050919054051.GB65954 at ip.net.ua>
Ruslan Ermilov <ru at freebsd.org> writes:
: About the commonality... Usually foo_stop() (which is called first in
: foo_detach() if you were talking about the detach) disables interrupts,
: so foo_intr() doesn't usually happen. From reading the code, I see the
: same holds true for ed(4).
Wrong. Foo_intr() does still happen because other devices can
: OTOH, it was shown that on some SMP machines it's possible to get a
: call to foo_intr() after foo_stop() has been called by foo_shutdown(),
: which will lead to a panic in most of the drivers. See kern/85005 and
: kern/62889 for some examples.
: I think the generic solution to this problem should be to return from
: foo_intr() quickly if IFF_DRV_RUNNING is not set.
Only if we free ifp after we tear down the interrupts.
More information about the cvs-all