mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-05 13:20:11 +00:00
Without VirtualQuery, a range no cached page table covers is looked up line by line in /proc/self/maps. A cursor in a gap between mappings never matched a line, so the scan parsed the whole file and then reported the rest of the range unmapped, including mapped pages after the gap. The scan now stops at the first mapping above the cursor, reports the gap up to it as inaccessible and continues from there, as the VirtualQuery path does with a free region. PPSA21564 queries near-null addresses (0x18, 0x30, 0x58) about 1500 times a second during resource capture; each of those parsed the whole maps file (about 5700 lines here) instead of stopping at the first mapping. Tests: agc_driver_graphics_tests describes three host pages with the middle one unmapped as two ranges, a query that starts in the gap as the page after it, and a near-null address as inaccessible.