From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wg0-f49.google.com ([74.125.82.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TAwMX-0000BY-Fe for linux-mtd@lists.infradead.org; Mon, 10 Sep 2012 05:16:46 +0000 Received: by wgbdt14 with SMTP id dt14so1021484wgb.18 for ; Sun, 09 Sep 2012 22:16:40 -0700 (PDT) Message-ID: <504D77D0.70705@gmail.com> Date: Mon, 10 Sep 2012 07:17:04 +0200 From: Sasha Levin MIME-Version: 1.0 To: "H. Peter Anvin" Subject: Re: mtd: kernel BUG at arch/x86/mm/pat.c:279! References: <1340959739.2936.28.camel@lappy> <1347057778.26695.68.camel@sbsiddha-desk.sc.intel.com> <1347062045.26695.82.camel@sbsiddha-desk.sc.intel.com> <504CCA31.2000003@zytor.com> In-Reply-To: <504CCA31.2000003@zytor.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Suresh Siddha , Linus Torvalds , "linux-kernel@vger.kernel.org" , linux-mm , linux-mtd@lists.infradead.org, Dave Jones , Andrew Morton , dwmw2@infradead.org List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On 09/09/2012 06:56 PM, H. Peter Anvin wrote: >> >> Anyway, that means that the BUG_ON() is likely bogus, but so is the >> whole calling convention. >> >> The 4kB range starting at 0xfffffffffffff000 sounds like a *valid* >> range, but that requires that we fix the calling convention to not >> have that "end" (exclusive) thing. It should either be "end" >> (inclusive), or just "len". >> > > On x86, it is definitely NOT a valid range. There is no physical addresses > there, and there will never be any. This reminds me a similar issue: If you try to mmap /dev/kmem at an offset which is not kernel owned (such as 0), you'll get all the way to __pa() before getting a BUG() about addresses not making sense. How come there's no arch-specific validation of attempts to access virtual/physical addresses? In the kmem example I'd assume that something very early on should be yelling at me about doing something like that, but for some reason I get all the way to __pa() before getting a BUG() (!). Thanks, Sasha