Messages in this thread | | | Date | Thu, 8 Dec 2016 22:22:54 +0300 | From | "Kirill A. Shutemov" <> | Subject | Re: [RFC, PATCHv1 16/28] x86/asm: remove __VIRTUAL_MASK_SHIFT==47 assert |
| |
On Thu, Dec 08, 2016 at 10:39:57AM -0800, Andy Lutomirski wrote: > On Thu, Dec 8, 2016 at 8:21 AM, Kirill A. Shutemov > <kirill.shutemov@linux.intel.com> wrote: > > We don't need it anymore. 17be0aec74fb ("x86/asm/entry/64: Implement > > better check for canonical addresses") made canonical address check > > generic wrt. address width. > > This code existed in part to remind us that this needs very careful > adjustment when the paging size becomes dynamic. If you want to > remove it, please add test cases to tools/testing/selftests/x86 that > verify: > > a. Either mmap(2^47-4096, ..., MAP_FIXED, ...) fails or that, if it > succeeds and you put a syscall instruction at the very end, that > invoking the syscall instruction there works. The easiest way to do > this may be to have the selftest literally have a page of text that > has 4094 0xcc bytes and a syscall and to map that page or perhaps move > it into place with mremap. That will avoid annoying W^X userspace > stuff from messing up the test. You'll need to handle the signal when > you fall off the end of the world after the syscall. > > b. Ditto for the new highest possible userspace page. > > c. Ditto for one page earlier to make sure that your test actually works. > > d. For each possible maximum address, call raise(SIGUSR1) and, in the > signal handler, change RIP to point to the first noncanonical address > and RCX to match RIP. Return and catch the resulting exception. This > may be easy to integrate into the sigreturn tests, and I can help with > that.
Thanks, for hints.
I'll come back to you with testcases to verify that they are you wanted to see.
-- Kirill A. Shutemov
| |