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