# Check or read from potentially invalid virtual address catching GP/page faults



## rlyeh (May 8, 2012)

Hello,

I've been working on a personal project, where I must handle potentially invalid information in scenario similar to a kernel panic. When I detect an erroneous condition, I try to dump certain structures, following pointers whenever possible.

So far I've implemented a test similar to those built in the copyin/copyout functions, using the MAX_USER_ADDRESS. On amd64, however, addresses like 0xdeadbeefdeadbeef would still fall within the range of kernel addresses assumed as "valid".


Is there any fault-tolerant way to test for the true validity of a given virtual address? ie. it can be read/accessed. kernacc is not working for me in certain cases, because it *only* searches for kernel_map pmaps, which is not going to work, say, for boot memory pages.
 Is there any arch-independent helper API to "examine" an address and dump its information in a similar way to ddb? How does ddb implement the override for the general protection fault handler when accessing unmapped memory?
121212

I could foresee questions about why do I actually need to do this, but I would appreciate it if we could just stick to providing answers disregarding of any subjective opinions. I have reasons to do this rather unorthodox checking and do not intend to waste anyone's time submitting my patch, for now. I'm just learning more about the vm internals.

Thanks!


----------

