From mboxrd@z Thu Jan 1 00:00:00 1970 From: Al Viro Subject: Re: inode_permission NULL pointer dereference in 3.13-rc1 Date: Fri, 29 Nov 2013 02:41:21 +0000 Message-ID: <20131129024121.GS10323@ZenIV.linux.org.uk> References: <20131125160648.GA4933@infradead.org> <20131126131134.GM10323@ZenIV.linux.org.uk> <20131126141253.GA28062@infradead.org> <20131127064351.GN10323@ZenIV.linux.org.uk> <20131127100906.GA19740@infradead.org> <20131128162618.GO10323@ZenIV.linux.org.uk> <20131128212301.GP10323@ZenIV.linux.org.uk> <20131128225102.GS10988@dastard> <20131128234441.GQ10323@ZenIV.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Dave Chinner , Christoph Hellwig , linux-fsdevel , xfs@oss.sgi.com To: Linus Torvalds Return-path: Received: from zeniv.linux.org.uk ([195.92.253.2]:52992 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752798Ab3K2ClZ (ORCPT ); Thu, 28 Nov 2013 21:41:25 -0500 Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Thu, Nov 28, 2013 at 06:07:27PM -0800, Linus Torvalds wrote: > HOWEVER. It's certainly *not* valid if "current->fs->root/pwd" points > to it. So yeah, there must have been an extra dput() somewhere. Or, > more likely, I think, we don't get the refcount to some dentry > properly any more. > > I don't see where, though. You did change where "LOOKUP_RCU" is > cleared in unlazy_walk() but you did add that > > nd->path.dentry = NULL; > > and that looks like it should be ok. And I don't see what else would care. *nod* BTW, vfsmount refcount is 12, so we *definitely* nowhere near the final mntput(), etc. and mnt->mnt_root itself should also have contributed. I'm going to try to find out _which_ test buggers the refcount - at least that way I'll have something resembling a usable reproducer...