From: Eric Sandeen <sandeen@sandeen.net>
To: Josef Bacik <josef@redhat.com>
Cc: linux-fsdevel@vger.kernel.org, eparis@redhat.com,
linux-kernel@vger.kernel.org, sds@tycho.nsa.gov,
selinux@tycho.nsa.gov, bfields@fieldses.org
Subject: Re: [PATCH] fs: call security_d_instantiate in d_obtain_alias V2
Date: Fri, 17 Dec 2010 14:45:36 -0600 [thread overview]
Message-ID: <4D0BCBF0.7060909@sandeen.net> (raw)
In-Reply-To: <1290131575-2489-1-git-send-email-josef@redhat.com>
On 11/18/2010 07:52 PM, Josef Bacik wrote:
> While trying to track down some NFS problems with BTRFS, I kept noticing I was
> getting -EACCESS for no apparent reason. Eric Paris and printk() helped me
> figure out that it was SELinux that was giving me grief, with the following
> denial
>
> type=AVC msg=audit(1290013638.413:95): avc: denied { 0x800000 } for pid=1772
> comm="nfsd" name="" dev=sda1 ino=256 scontext=system_u:system_r:kernel_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=file
>
> Turns out this is because in d_obtain_alias if we can't find an alias we create
> one and do all the normal instantiation stuff, but we don't do the
> security_d_instantiate.
>
> Usually we are protected from getting a hashed dentry that hasn't yet run
> security_d_instantiate() by the parent's i_mutex, but obviously this isn't an
> option there, so in order to deal with the case that a second thread comes in
> and finds our new dentry before we get to run security_d_instantiate(), we go
> ahead and call it if we find a dentry already. Eric assures me that this is ok
> as the code checks to see if the dentry has been initialized already so calling
> security_d_instantiate() against the same dentry multiple times is ok. With
> this patch I'm no longer getting errant -EACCESS values.
>
> Signed-off-by: Josef Bacik <josef@redhat.com>
Thanks, this fixes xfsdump too, see also:
https://bugzilla.redhat.com/show_bug.cgi?id=662344
Bug 662344 - broken SELinux AVCs on XFS partition when running xfsdump
(xfsdump uses the open by handle library from xfsprogs)
-Eric
> ---
> V1->V2:
> -added second security_d_instantiate() call
>
> fs/dcache.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/fs/dcache.c b/fs/dcache.c
> index 23702a9..119d489 100644
> --- a/fs/dcache.c
> +++ b/fs/dcache.c
> @@ -1201,9 +1201,12 @@ struct dentry *d_obtain_alias(struct inode *inode)
> spin_unlock(&tmp->d_lock);
>
> spin_unlock(&dcache_lock);
> + security_d_instantiate(tmp, inode);
> return tmp;
>
> out_iput:
> + if (res && !IS_ERR(res))
> + security_d_instantiate(res, inode);
> iput(inode);
> return res;
> }
next prev parent reply other threads:[~2010-12-17 20:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-19 1:52 [PATCH] fs: call security_d_instantiate in d_obtain_alias V2 Josef Bacik
2010-11-19 22:35 ` J. Bruce Fields
2010-11-21 2:59 ` J. Bruce Fields
2010-11-21 15:44 ` Josef Bacik
2010-11-29 20:41 ` Josef Bacik
2010-12-17 20:45 ` Eric Sandeen [this message]
2011-02-14 18:35 ` Eric Paris
2011-02-14 18:35 ` Eric Paris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D0BCBF0.7060909@sandeen.net \
--to=sandeen@sandeen.net \
--cc=bfields@fieldses.org \
--cc=eparis@redhat.com \
--cc=josef@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sds@tycho.nsa.gov \
--cc=selinux@tycho.nsa.gov \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.