cvs commit: src/sys/dev/fxp if_fxp.c if_fxpvar.h

Harti Brandt brandt at fokus.fraunhofer.de
Wed Apr 30 00:37:54 PDT 2003


On Tue, 29 Apr 2003, Nate Lawson wrote:

NL>On Mon, 28 Apr 2003, Warner Losh wrote:

NL>>           2) Call FXP_UNLOCK() before calling bus_teardown_intr to avoid
NL>>              a possible deadlock reported by jhb.
NL>
NL>This adds a race since fxp_intr could occur after the unlock but before
NL>the bus_teardown_intr call.  The reason why I tore down the intr while
NL>holding the lock is so fxp_intr would be prevented from accessing the
NL>device until it has been disabled.  Then the normal checks in fxp_intr
NL>(IFF_OACTIVE or whatever) would show the card is gone and return without
NL>accessing it.  I guess this is ok since ether_ifdetach is still called
NL>with the lock held (since it is what clears IFF_OACTIVE) but I'm
NL>interested in your thoughts.

For what I know, you should not call ether_ifdetach with the card lock
held. ether_ifdetach calls if_detach which in turn may lock the radix node
head to remove routes. The lock order should be 1) radix node head, 2)
interface not the other way around.

harti
-- 
harti brandt,
http://www.fokus.fraunhofer.de/research/cc/cats/employees/hartmut.brandt/private
brandt at fokus.fraunhofer.de, harti at freebsd.org


More information about the cvs-src mailing list