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
generate interrupts...

: 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.

Warner


More information about the cvs-src mailing list