diff options
author | Dmitri Monakhov <dmonakhov@openvz.org> | 2008-12-01 14:34:56 -0800 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2009-01-05 11:53:07 -0500 |
commit | 7f5ff766a7babd72fc192125e12ef5570effff4c (patch) | |
tree | c41659d7614ea70c3dc853c6187f1860d030888b /mm | |
parent | 5b6f1eb97d462a45be3b30759758b5fdbb562c8c (diff) | |
download | kernel-crypto-7f5ff766a7babd72fc192125e12ef5570effff4c.tar.gz kernel-crypto-7f5ff766a7babd72fc192125e12ef5570effff4c.tar.xz kernel-crypto-7f5ff766a7babd72fc192125e12ef5570effff4c.zip |
kill suid bit only for regular files
We don't have to do it because it is useless for non regular files.
In fact block device may trigger this path without dentry->d_inode->i_mutex.
(akpm: concerns were expressed (by me) about S_ISDIR inodes)
Signed-off-by: Dmitri Monakhov <dmonakhov@openvz.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/filemap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index f3e5f8944d1..ed53ce87625 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1766,7 +1766,7 @@ int should_remove_suid(struct dentry *dentry) if (unlikely((mode & S_ISGID) && (mode & S_IXGRP))) kill |= ATTR_KILL_SGID; - if (unlikely(kill && !capable(CAP_FSETID))) + if (unlikely(kill && !capable(CAP_FSETID) && S_ISREG(mode))) return kill; return 0; |