OpenSolaris

Printable Version Enter a New Search
Bug ID 6624164
Synopsis IRE bucket temporary IRE count may be decremented incorrectly
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:tcp-ip
Keywords rtiq_reviewed
Responsible Engineer Jonathan Anderson
Reported Against snv_76
Duplicate Of
Introduced In solaris_8u7
Commit to Fix snv_78
Fixed In snv_78
Release Fixed solaris_nevada(snv_78)
Related Bugs 6533097
Submit Date 31-October-2007
Last Update Date 21-November-2007
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.
Work Around
N/A
Comments
N/A