From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751209AbdJDWPn (ORCPT ); Wed, 4 Oct 2017 18:15:43 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58262 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750951AbdJDWPl (ORCPT ); Wed, 4 Oct 2017 18:15:41 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 788D7796ED Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jpoimboe@redhat.com Date: Wed, 4 Oct 2017 17:15:38 -0500 From: Josh Poimboeuf To: Linus Torvalds Cc: Tetsuo Handa , Wu Fengguang , Byungchul Park , Ingo Molnar , Peter Zijlstra , Linux Kernel Mailing List , LKP , Borislav Petkov , the arch/x86 maintainers , Peter Anvin , Thomas Gleixner Subject: Re: [lockdep] b09be676e0 BUG: unable to handle kernel NULL pointer dereference at 000001f2 Message-ID: <20171004221538.sw2u5pc32pysfetf@treble> References: <20171003143147.ypotpg4f3dql4gtf@treble> <20171003144136.ar7z3pavhvizfabs@treble> <20171003150538.57dq7xe6afikpzyp@treble> <20171003162815.2eatamg4h3tpsypl@treble> <20171003173402.hq4aviy5hztgauyt@treble> <201710040644.GJE89219.FOHMFSFOVtOQLJ@I-love.SAKURA.ne.jp> <20171004210624.yyi64y2o5cvbr3d3@treble> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="ts66w2x7fepbh6wm" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 04 Oct 2017 22:15:41 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --ts66w2x7fepbh6wm Content-Type: text/plain; charset=utf-8 Content-Disposition: inline On Wed, Oct 04, 2017 at 02:30:42PM -0700, Linus Torvalds wrote: > On Wed, Oct 4, 2017 at 2:06 PM, Josh Poimboeuf wrote: > > > > I compiled the same kernel with a similar version of GCC. It turns out > > that GCC *does* create unaligned stacks with frame pointers enabled: > > Christ. What a piece of crap. > > It doesn't even seem to make any sense. Spill room for the "u16 > item_count" and "u8 move_type"? I didn't have the patience to try to figure out what it thought it was trying to do. But it doesn't even use %esp in the function, so it's obviously just pointless code. Pasting the full function below. > That function is disgusting anyway (the switch really should be > outside the loop, not inside it), but whatever. No excuse for that > kind of garbage code generation. > > > This was a leaf function. For no apparent reason, GCC 4.8 decided to > > subtract 3 from the stack pointer in the prologue. > > Can you make objtool warn about unaligned stack pointer additions like that? That should be easy to add, and a good idea to check for. I don't look forward to the continual 0-day bot complaints, so hopefully we can figure out a way to fix them (or deprecate GCC 4!), or at least disable the checking for older versions of GCC with the known issue. > Maybe it only happens in very limited cases, and we can find a pattern > to why gcc generates garbage code like that? And perhaps even how to > just avoid it? Just from grepping the objdump I can tell it happened in several different functions. For example all the following functions have 'sub $0x1,%esp': match_wildcard() pci_vpd_find_tag() strspn() sub $0x2,%esp: rgb_foreground() scsi_extd_sense_format() sub $0x5,%esp: iot2040_rs485_config() sub $0x6,%esp: x86_match_cpu() clear_buffer_attributes() The only thing I can see they have in common is that they're leaf functions. In all cases the stack pointer is otherwise unused. The problem seemed to go away when I built the same kernel with GCC 5.3. FYI, here's the full function (4.14-rc3 compiled with RHEL GCC 4.8.3-9). Config is attached. c124a388 : c124a388: 55 push %ebp c124a389: 89 e5 mov %esp,%ebp c124a38b: 57 push %edi c124a38c: 56 push %esi c124a38d: 89 d6 mov %edx,%esi c124a38f: 53 push %ebx c124a390: 31 db xor %ebx,%ebx c124a392: 83 ec 03 sub $0x3,%esp c124a395: 8a 55 08 mov 0x8(%ebp),%dl c124a398: 66 89 4d f2 mov %cx,-0xe(%ebp) c124a39c: 83 ea 15 sub $0x15,%edx c124a39f: 88 55 f1 mov %dl,-0xf(%ebp) c124a3a2: 0f b6 fa movzbl %dl,%edi c124a3a5: 0f b7 4d f2 movzwl -0xe(%ebp),%ecx c124a3a9: 39 cb cmp %ecx,%ebx c124a3ab: 73 36 jae c124a3e3 c124a3ad: 80 7d f1 07 cmpb $0x7,-0xf(%ebp) c124a3b1: 77 30 ja c124a3e3 c124a3b3: ff 24 bd cc e9 36 c1 jmp *-0x3ec91634(,%edi,4) c124a3b6: R_386_32 .rodata c124a3ba: 89 c7 mov %eax,%edi c124a3bc: f3 a4 rep movsb %ds:(%esi),%es:(%edi) c124a3be: eb 23 jmp c124a3e3 c124a3c0: 66 8b 0c 5e mov (%esi,%ebx,2),%cx c124a3c4: 66 89 0c 58 mov %cx,(%eax,%ebx,2) c124a3c8: eb 16 jmp c124a3e0 c124a3ca: 8b 0c 9e mov (%esi,%ebx,4),%ecx c124a3cd: 89 0c 98 mov %ecx,(%eax,%ebx,4) c124a3d0: eb 0e jmp c124a3e0 c124a3d2: 8b 14 de mov (%esi,%ebx,8),%edx c124a3d5: 8b 4c de 04 mov 0x4(%esi,%ebx,8),%ecx c124a3d9: 89 14 d8 mov %edx,(%eax,%ebx,8) c124a3dc: 89 4c d8 04 mov %ecx,0x4(%eax,%ebx,8) c124a3e0: 43 inc %ebx c124a3e1: eb c2 jmp c124a3a5 c124a3e3: 83 c4 03 add $0x3,%esp c124a3e6: 5b pop %ebx c124a3e7: 5e pop %esi c124a3e8: 5f pop %edi c124a3e9: 5d pop %ebp c124a3ea: c3 ret --ts66w2x7fepbh6wm Content-Type: application/x-gunzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 A6inVxTy5Ms+LsBTTcdi+T/MPY2wg/cAAA== --ts66w2x7fepbh6wm--