tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bad merge in uvm_fault_lower?



Hi,
In sys/uvm/uvm_fault.c I see three KASSERT's twice: 


    /* locked: maps(read), amap(if there), uobj(if !null), uobjpage(if !null) */
    KASSERT(amap == NULL || mutex_owned(&amap->am_l));
    KASSERT(uobj == NULL || mutex_owned(&uobj->vmobjlock));
    KASSERT(uobjpage == NULL || (uobjpage->flags & PG_BUSY) != 0);

    /*
     * note that at this point we are done with any front or back pages.
     * we are now going to focus on the center page (i.e. the one we've
     * faulted on).  if we have faulted on the upper (anon) layer
     * [i.e. case 1], then the anon we want is anons[centeridx] (we have
     * not touched it yet).  if we have faulted on the bottom (uobj)
     * layer [i.e. case 2] and the page was both present and available,
     * then we've got a pointer to it as "uobjpage" and we've already
     * made it BUSY.
     */

    /*
     * locked:
     * maps(read), amap(if there), uobj(if !null), uobjpage(if !null)
     */
    KASSERT(amap == NULL || mutex_owned(&amap->am_l));
    KASSERT(uobj == NULL || mutex_owned(&uobj->vmobjlock));
    KASSERT(uobjpage == NULL || (uobjpage->flags & PG_BUSY) != 0);


Alex


Home | Main Index | Thread Index | Old Index