Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753677AbcLHTYE (ORCPT ); Thu, 8 Dec 2016 14:24:04 -0500 Received: from mail-wj0-f196.google.com ([209.85.210.196]:34854 "EHLO mail-wj0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752441AbcLHTXv (ORCPT ); Thu, 8 Dec 2016 14:23:51 -0500 Date: Thu, 8 Dec 2016 22:22:54 +0300 From: "Kirill A. Shutemov" To: Andy Lutomirski Cc: "Kirill A. Shutemov" , Linus Torvalds , Andrew Morton , X86 ML , Thomas Gleixner , Ingo Molnar , Arnd Bergmann , "H. Peter Anvin" , Andi Kleen , Dave Hansen , linux-arch , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: Re: [RFC, PATCHv1 16/28] x86/asm: remove __VIRTUAL_MASK_SHIFT==47 assert Message-ID: <20161208192254.GB30380@node.shutemov.name> References: <20161208162150.148763-1-kirill.shutemov@linux.intel.com> <20161208162150.148763-18-kirill.shutemov@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1675 Lines: 38 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 > 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