From: Chris Mason <chris.mason@oracle.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: Casey Schaufler <casey@schaufler-ca.com>,
LSM <linux-security-module@vger.kernel.org>,
linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: Observed unexpected behavior of BTRFS in d_instantiate
Date: Thu, 28 Apr 2011 13:27:03 -0400 [thread overview]
Message-ID: <1304011601-sup-997@think> (raw)
In-Reply-To: <1304011439.16286.15.camel@moss-pluto>
Excerpts from Stephen Smalley's message of 2011-04-28 13:23:59 -0400:
> On Thu, 2011-04-28 at 13:13 -0400, Stephen Smalley wrote:
> > On Thu, 2011-04-28 at 10:03 -0700, Casey Schaufler wrote:
> > > On 4/28/2011 6:30 AM, Stephen Smalley wrote:
> > > > On Tue, 2011-04-26 at 20:15 -0700, Casey Schaufler wrote:
> > > >> I have been tracking down an problem that we've been seeing
> > > >> with Smack on top of btrfs and have narrowed it down to a check
> > > >> in smack_d_instantiate() that checks to see if the underlying
> > > >> filesystem supports extended attributes by looking at
> > > >>
> > > >> inode->i_op->getxattr
> > > >>
> > > >> If the filesystem has no entry for getxattr it is assumed that
> > > >> it does not support extended attributes. The Smack code clearly
> > > >> finds this value to be NULL for btrfs and uses a fallback value.
> > > >> Clearly something is amiss, as other code paths clearly find the
> > > >> i_op->getxattr function and use it to effect. The btrfs code
> > > >> quite obviously includes getxattr functions.
> > > >>
> > > >> So, what is btrfs up to such that the inode ops does not include
> > > >> getxattr when security_d_instantiate is called? I am led to
> > > >> understand that SELinux has worked around this, but looking at
> > > >> the SELinux code I expect that there is a problem there as well.
> > > >>
> > > >> Thank you.
> > > > kernel version(s)?
> > >
> > > 2.6.37
> > > 2.6.39rc4
> > >
> > > > reproducer?
> > >
> > > The MeeGo team saw the behavior first. I have been instrumenting
> > > the Smack code to track down what is happening. I am in the process
> > > of developing a Smack workaround for the btrfs behavior.
> >
> > If this is for newly created files, then we initialize the in-core
> > security label for the inode as part of the inode_init_security hook in
> > SELinux and thus don't even try to call ->getxattr at d_instantiate
> > time. Not sure though why it wouldn't already be set.
>
> Actually, a quick look at the code makes it clear. btrfs_create() and
> friends call d_instantiate() before setting inode->i_op() for new
> inodes. In contrast, ext[234] set the i_op before calling
> d_instantiate().
>
> In any event, you don't really need to go through the slow path of
> calling ->getxattr for new inodes as you already know the label that is
> being set.
>
There's no reason we can't set i_op sooner in btrfs, I'll patch this in.
-chris
next prev parent reply other threads:[~2011-04-28 17:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-27 3:15 Observed unexpected behavior of BTRFS in d_instantiate Casey Schaufler
2011-04-28 13:30 ` Stephen Smalley
2011-04-28 17:03 ` Casey Schaufler
2011-04-28 17:13 ` Stephen Smalley
2011-04-28 17:23 ` Stephen Smalley
2011-04-28 17:27 ` Chris Mason [this message]
2011-04-28 17:52 ` Casey Schaufler
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=1304011601-sup-997@think \
--to=chris.mason@oracle.com \
--cc=casey@schaufler-ca.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=sds@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.