cvs commit: src/sys/kern kern_intr.c
Don Lewis
truckman at FreeBSD.org
Tue Jan 13 14:55:48 PST 2004
truckman 2004/01/13 14:55:46 PST
FreeBSD src repository
Modified files:
sys/kern kern_intr.c
Log:
If a device attach routine fails during boot and calls bus_teardown_intr(),
ithread_remove_handler() may fail to remove the interrupt handler if
it decides to let the ithread do the removal. The problem is that during
boot "cold" is set, which causes msleep() to return immediately. This
will cause ithread_remove_handler() to fail to wait for the ithread
to do the removal from the handler TAILQ before freeing the handler
back to the heap. Bad things will happen when some other user of the
TAILQ, such as ithread_add_handler() or the actual ithread attempts to use
the freed handler. Fix the problem by forcing ithread_remove_handler()
to do the actual removal itself if the "cold" flag is set.
Reviewed by: jhb
Revision Changes Path
1.104 +5 -1 src/sys/kern/kern_intr.c
More information about the cvs-all
mailing list