from the last few lines of kproc (port/proc.c:/^kproc)

                ready(p);
                /*
                 *  since the bss/data segments are now shareable,
                 *  any mmu info about this process is now stale
                 *  and has to be discarded.
                 */
                p->newtlb = 1;
                flushmmu();
        }

this looks obviously wrong to me.  you can't ready the proc
before messing with it's tlb bits.  it could (just for one example)
have exited and been cleaned up before p is dereferenced to
set newtlb = 1.

wouldn't this be much safer as

                /*
                 *  since the bss/data segments are now shareable,
                 *  any mmu info about this process is now stale
                 *  and has to be discarded.
                 */
                p->newtlb = 1;
                flushmmu();

                ready(p);
        }

since this looks too obvious, is there something that i'm missing?

- erik

Reply via email to