David,
It is interesting, I still don't understand the effect - if guard page
is used then two different VMAP allocations can't use two buddy PTEs.
Yes, only one of buddy PTEs in that case can be allocated and attached
to VMA but caller doesn't know about additional page and two cases are
possible. Even map_vm_area has no any info about guard page.
(assume VMA1 has low address range and VMA2 has higher address range):
a. VMA1 (after adjustment) ends at even PTE ==> caller doesn't use that
PTE and there is no collision with last pair of buddy PTEs, even if VMA2
uses odd PTE from that pair.
b. VMA1 (after adjustment) ends at odd PTE ==> again, this buddy pair
is used only VMA1. Next VMA2 start from next pair.
What is wrong here?
Is it possible that access gone bad and touches a page beyond a
requested size?
Is it possible that it is not vmap() but some different interface was used?
- Leonid.