jtkohl@athena.mit.edu (John T Kohl) (06/09/87)
Index: sys/sys/vm_page.c, 4.3BSD and derivatives, including Wisconsin 4.3+NFS Description: When paging in a new process, it is possible that fodkluster() is called as part of pagein(). In this case, it tries to decrement an unsigned which is set to zero, and check if it is less than some value. This produces a panic shortly thereafter. Fix: For binary sites, you can patch the global nofodklust to be non-zero in a running system (it's BSS, so you can't patch the kernel). Source sites cann apply this patch (your line numbers will almost certainly be different): *** /tmp/,RCSt1020091 Tue Jun 9 09:34:09 1987 --- vm_page.c Fri Jun 5 11:18:18 1987 *************** *** 1271,1276 **** --- 1271,1281 ---- bn = *pbn; v = v0; for (klsize = 1; klsize < KLMAX; klsize++) { + /* since v is unsigned, we must never decrement it below + zero or the v < vmin test will fail and we can + end up calling vtod with an invalid v */ + if (v < CLSIZE) + break; v -= CLSIZE; if (v < vmin) break; ---- John Kohl MIT/Project Athena