From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zeniv.linux.org.uk ([195.92.253.2]:53151 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1422920AbcBZWID (ORCPT ); Fri, 26 Feb 2016 17:08:03 -0500 Date: Fri, 26 Feb 2016 22:07:59 +0000 From: Al Viro To: Dmitry Vyukov Cc: Ian Kent , =?iso-8859-1?Q?Micka=EBl_Sala=FCn?= , "linux-fsdevel@vger.kernel.org" , LKML , syzkaller , Kostya Serebryany , Alexander Potapenko , Sasha Levin , Linus Torvalds Subject: Re: fs: NULL deref in atime_needs_update Message-ID: <20160226220759.GH17997@ZenIV.linux.org.uk> References: <1456283533.2933.20.camel@themaw.net> <20160224044628.GQ17997@ZenIV.linux.org.uk> <20160224151511.GR17997@ZenIV.linux.org.uk> <20160225163927.GW17997@ZenIV.linux.org.uk> <20160226212137.GF17997@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri, Feb 26, 2016 at 10:25:21PM +0100, Dmitry Vyukov wrote: > On Fri, Feb 26, 2016 at 10:21 PM, Al Viro wrote: > > On Thu, Feb 25, 2016 at 04:39:27PM +0000, Al Viro wrote: > >> Hrm... OK, seeing that you still seem to trigger those within an hour or > >> two (and *any* of remaining WARN_ON() are serious bugs - none of the > >> "mitigation had been triggered" remained, sorry for not making it clear), > >> let's try this. Again, any WARN_ON triggered means that we'd caught something, > >> whether it progresses into oops or not. > > > > Any news on that one? I'm going to carve fixes for understood bugs out of > > that one and put those into tonight push, but it would be nice to sort out > > all remaining crap lurking in that area... > > > > Another question: what about the very first trace you'd posted, with apparent > > GPF at 00000050? Have you seen anything like that afterwards? > > No, I did not have time to retest. > > GPF at 00000050 was not mine, it was Micka�l's. Ah, OK - his is basically a forced nd->stack[] underrun, with passing a never-assigned nd->link_inode to atime_needs_update(), so we are just passing a contents of uninitialized stack word there and while it ends up possible to dereference, it's not an address of struct inode and the first attempt to follow a pointer in what would've been a struct inode at that address (accessing inode->i_sb->s_flags) did blow up with GPF at offsetof(struct super_block, s_flags). All right, so we basically have several understood ones with fixes plus something unknown that leads to lookup_fast() returning 0 with NULL in *inode in about an hour or two on your setup...