summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2010-05-14 17:44:10 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2010-05-22 00:31:20 +0200
commita7cf4145bb86aaf85d4d4d29a69b50b688e2e49d (patch)
tree485e378b9fd42ff88663fbb149387173856fa67d
parentgfs: constify xattr_handler (diff)
downloadlinux-a7cf4145bb86aaf85d4d4d29a69b50b688e2e49d.tar.xz
linux-a7cf4145bb86aaf85d4d4d29a69b50b688e2e49d.zip
anon_inode: set S_IFREG on the anon_inode
anon_inode_mkinode() sets inode->i_mode = S_IRUSR | S_IWUSR; This means that (inode->i_mode & S_IFMT) == 0. This trips up some SELinux code that needs to determine if a given inode is a regular file, a directory, etc. The easiest solution is to just make sure that the anon_inode also sets S_IFREG. Signed-off-by: Eric Paris <eparis@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--fs/anon_inodes.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c
index e4b75d6eda83..9bd4b3876c99 100644
--- a/fs/anon_inodes.c
+++ b/fs/anon_inodes.c
@@ -205,7 +205,7 @@ static struct inode *anon_inode_mkinode(void)
* that it already _is_ on the dirty list.
*/
inode->i_state = I_DIRTY;
- inode->i_mode = S_IRUSR | S_IWUSR;
+ inode->i_mode = S_IFREG | S_IRUSR | S_IWUSR;
inode->i_uid = current_fsuid();
inode->i_gid = current_fsgid();
inode->i_flags |= S_PRIVATE;