From: Chris Mason <chris.mason@oracle.com>
To: linux-fsdevel@vger.kernel.org, serge.hallyn@canonical.com
Subject: Re: remove_suid bangs on xattrs
Date: Mon, 16 Aug 2010 15:44:39 -0400 [thread overview]
Message-ID: <20100816194439.GG993@think> (raw)
In-Reply-To: <20100816193812.GF993@think>
[ sorry, corrected cc list ]
On Mon, Aug 16, 2010 at 03:38:12PM -0400, Chris Mason wrote:
> 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
>
next prev parent reply other threads:[~2010-08-16 19:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-16 19:38 remove_suid bangs on xattrs Chris Mason
2010-08-16 19:44 ` Chris Mason [this message]
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=20100816194439.GG993@think \
--to=chris.mason@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=serge.hallyn@canonical.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 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.