CVSROOT:        /cvs
Module name:    src
Changes by:     d...@cvs.openbsd.org    2024/11/19 19:18:45

Modified files:
        sys/net        : ifq.c ifq.h 

Log message:
provide ifq_deq_set_oactive.

ifq_deq_set_oactive is a variation on ifq_set_oactive that can be
called inside an if_deq_begin "transaction".

afresh@ found de(4) was calling ifq_set_oactive while holding the
ifq mutex via ifq_deq_begin, which led to a panic because ifq_set_oactive
also tries to take the ifq mutex. ifq_deq_set_oactive assumes the
caller is already holding the mutex.

de(4) is confusing, so it seemed simpler to add a small tweak to
ifqs than try and do major surgery on such a hairy driver.

tested by afresh@

Reply via email to