linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chris Mason <chris.mason@oracle.com>
To: linux-fsdevel@vger.kernel.org
Cc: serue@us.ibm.com
Subject: remove_suid bangs on xattrs
Date: Mon, 16 Aug 2010 15:38:12 -0400	[thread overview]
Message-ID: <20100816193812.GF993@think> (raw)

Hi everyone,

I'm looking into a 2.6.35 btrfs performance regression, and perf tells
me that I'm spending a lot of time hammering on xattrs inside
remove_suid.  This is pretty surprising because I'm running as root, and
my files are not suid.  Looking back to this commit:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b53767719b6cd8789392ea3e7e2eb7b8906898f0

We've changed remove_suid's semantics from

if (file_is_suid)
    try to remove it

To something that always checks to see if we have removal permissions.

Was this intentional?  It didn't cause my 2.6.35 regression (that's all
my fault) but it does look wrong to me:

diff --git a/mm/filemap.c b/mm/filemap.c
index 4fb1546..79f24a9 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1627,12 +1627,18 @@ int __remove_suid(struct dentry *dentry, int kill)
 
 int remove_suid(struct dentry *dentry)
 {
-       int kill = should_remove_suid(dentry);
+       int killsuid = should_remove_suid(dentry);
+       int killpriv = security_inode_need_killpriv(dentry);
+       int error = 0;
 
-       if (unlikely(kill))
-               return __remove_suid(dentry, kill);
+       if (killpriv < 0)
+               return killpriv;
+       if (killpriv)
+               error = security_inode_killpriv(dentry);
+       if (!error && killsuid)
+               error = __remove_suid(dentry, killsuid);
 
-       return 0;
+       return error;
 }
 EXPORT_SYMBOL(remove_suid);

-chris


             reply	other threads:[~2010-08-16 19:39 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-16 19:38 Chris Mason [this message]
2010-08-16 19:44 ` remove_suid bangs on xattrs Chris Mason
2010-08-18  2:41   ` Serge E. Hallyn
2010-08-20  5:31     ` Andrew G. Morgan
2010-08-20 12:25       ` Serge E. Hallyn
     [not found]       ` <5E83F6C3-2B1E-4FBF-960C-27364528813C@dilger.ca>
2010-09-02 16:02         ` Serge E. Hallyn
2010-09-02 21:01           ` Andreas Dilger

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=20100816193812.GF993@think \
    --to=chris.mason@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=serue@us.ibm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).