[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180428001003.GA14907@ZenIV.linux.org.uk>
Date: Sat, 28 Apr 2018 01:10:03 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: NeilBrown <neilb@...e.com>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
linux-fsdevel <linux-fsdevel@...r.kernel.org>,
Christoph Hellwig <hch@....de>,
Thomas Gleixner <tglx@...utronix.de>,
Peter Zijlstra <peterz@...radead.org>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Eric Biederman <ebiederm@...ssion.com>
Subject: Re: dcache: remove trylock loops (was Re: [BUG] lock_parent()
breakage when used from shrink_dentry_list())
On Tue, Mar 13, 2018 at 12:12:51PM +1100, NeilBrown wrote:
> > * selinux inode_doinit_with_dentry() (two call sites, very alike)
>
> I'm less sure about this one, but I think it probably wants
> d_find_any_alias() as well. Like cap_inode_getsecurity() it only wants
> a dentry so that it can pass something to __vfs_getxattr(),
> and that only wants a dentry so it can pass something to ->get.
>
> Possibly we should rename d_find_alias() to d_find_hashed_alias() so that
> people need to make a conscious choice between d_find_hashed_alias() and
> d_find_any_alias() ??
FWIW, it *is* a bug; this
/*
* this is can be hit on boot when a file is accessed
* before the policy is loaded. When we load policy we
* may find inodes that have no dentry on the
* sbsec->isec_head list. No reason to complain as these
* will get fixed up the next time we go through
* inode_doinit with a dentry, before these inodes could
* be used again by userspace.
*/
in selinux/hooks.c is flat-out wrong now. Sure, if you first load selinux
policy after exporting something over NFS or letting attacker play with
open-by-fhandle, you are past any help, but still...
I disagree about going for d_find_any_alias() from the very beginning, BTW -
we need to try it in case of d_find_alias() failure, but sufficiently crappy
filesystem can bloody well fail to access xattrs via disconnected dentry.
Powered by blists - more mailing lists