Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932347AbaKTBQs (ORCPT ); Wed, 19 Nov 2014 20:16:48 -0500 Received: from mail-la0-f41.google.com ([209.85.215.41]:44879 "EHLO mail-la0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932209AbaKTBQr (ORCPT ); Wed, 19 Nov 2014 20:16:47 -0500 MIME-Version: 1.0 In-Reply-To: References: <20141118145234.GA7487@redhat.com> <20141118215540.GD35311@redhat.com> <20141119021902.GA14216@redhat.com> <20141119145902.GA13387@redhat.com> <20141119190215.GA10796@lerouge> <20141119225615.GA11386@lerouge> From: Andy Lutomirski Date: Wed, 19 Nov 2014 17:16:24 -0800 Message-ID: Subject: Re: frequent lockups in 3.18rc4 To: Linus Torvalds Cc: Thomas Gleixner , "linux-kernel@vger.kernel.org" , Arnaldo Carvalho de Melo , Peter Zijlstra , Frederic Weisbecker , Don Zickus , Dave Jones , "the arch/x86 maintainers" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 19, 2014 at 5:07 PM, Linus Torvalds wrote: > On Wed, Nov 19, 2014 at 4:49 PM, Andy Lutomirski wrote: >> >> I thought so for a while, too, but now I disagree. On PGE hardware, >> it seems entirely possible that the new stack would be in the TLB even >> if it's not visible via cr3. Then, as soon as the TLB entry expires, >> we double-fault. > > Ahh. Good point. > >> I don't want vmalloc to avoid low-order allocations -- I want it to >> have guard pages. The fact that a user-triggerable stack overflow is >> basically root right now and doesn't reliably OOPS scares me. > > Well, if you do that, you would have to make the double-fault handler > aware of the stack issue anyway, and then you could just do teh same > PGD repopulation that a page fault does and return (for the case where > you didn't overflow the stack, just had the page tables unpopulated - > obviously an actual stack overflow should do something more drastic). And you were calling me crazy? :) We could be restarting just about anything if that happens. Except that if we double-faulted on a trap gate entry instead of an interrupt gate entry, then we can't restart, and, unless we can somehow decode the error code usefully (it's woefully undocumented), int 0x80 and int3 might be impossible to handle correctly if it double-faults. And please don't suggest moving int 0x80 to an IST stack :) The SDM specifically says that you must not try to recover after a double-fault. We do, however, recover from a double-fault in the specific case of an iret failure during espfix64 processing (and I even have a nice test case for it), but I think that hpa had a long conversation with one of the microcode architects before he was okay with that. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/