CVSROOT: /cvs Module name: src Changes by: kette...@cvs.openbsd.org 2015/09/17 12:04:49
Modified files: sys/uvm : uvm_km.c Log message: Back out rev. 1.125. This bit was left behind (intentionally?) when the remainder of that commit was backed out. However,clearing the PQ_AOBJ bit here is definitely wrong. Our pagedaemon uses two separate lists to keep track of inactive pages. It uses PQ_SWAPBACKED, which really is both PQ_ANON and PQ_AOBJ to keep track of which inactive queue a page is sitting on. So if you twiddle PQ_AOBJ (or PQ_ANON) for an inactive page, a subsequent uvm_pagefree(9) will remove the page from the wrong queue! This usually goes unnoticed, but if the page happens to be the last one on the queue, the queues get corrupted. The damage quickly spreads to the free page queues and almost certainly results in the uvm_pmr_size_RB_REMOVE_COLOR() faults that people have seen sporadically since the spring of this year. ok visa@, beck@, krw@, guenther@