kernel - Close small race in kqueue
* Normalize the kn_status reprocessing code to close a race.
A knote_detach_and_drop() during a descriptor close can set
KN_DELETING and return, leaving a knote undergoing processing
by another thread marked deleted.
If the other thread is trying to execute a filter the filter can
wind up being run after the file pointer has been detached
from the knote, resulting in a panic.
* All KN_DELETING and KN_WAITING flags also now set KN_REPROCESS and
all KN_REPROCESS handling is dealt with the same way. The filter
is run if KN_REPROCESS is not set and if it is set any KN_DELETING
and KN_WAITING flags are dealt with before the filter is run.