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!