Update kernel base to work for non-KASLR kernels. #904
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Replace an existing check for "start >= loadSegment.Vaddr" with "start >= 0x8000000000000000".
The old condition was checking for the mapping start address to be greater or equal to the program segment Vaddr. However, for kernels without KASLR, the mapping start address (start) is less or equal the program header Vaddr. If the program header that includes the '.text' section is not the first segment, then the mapping start is strictly less than loadSegment.Vaddr.
Instead of removing the condition, we replace it with a check that start is in the kernel address space, so we don't take this path for user space binaries.
Adjusted the test case for PIE kernels to match actual addresses seen for a non-KASLR kernel. The new test fails with the old code and succeeds now.