|
Description
|
There are currently several places where we manipulate the IRE_MARK_TEMPORARY bit and the IRE bucket
temporary IRE count like this:
if (ire->ire_marks & IRE_MARK_TEMPORARY) {
irb_t *irb = ire->ire_bucket;
rw_enter(&irb->irb_lock, RW_WRITER);
ire->ire_marks &= ~IRE_MARK_TEMPORARY;
irb->irb_tmp_ire_cnt--;
rw_exit(&irb->irb_lock);
}
We need to check for the temporary flag again _after_ acquiring the lock in order
to guarantee consistency of irb_tmp_ire_cnt.
|