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