diff options
| author | James Morris <jmorris@namei.org> | 2011-03-07 19:38:10 -0500 |
|---|---|---|
| committer | James Morris <jmorris@namei.org> | 2011-03-07 19:38:10 -0500 |
| commit | fe3fa43039d47ee4e22caf460b79b62a14937f79 (patch) | |
| tree | 9eab8d00f1227b9fe0959f32a62d892ed35803ba | |
| parent | ee009e4a0d4555ed522a631bae9896399674f064 (diff) | |
| parent | 026eb167ae77244458fa4b4b9fc171209c079ba7 (diff) | |
Merge branch 'master' of git://git.infradead.org/users/eparis/selinux into next
52 files changed, 594 insertions, 323 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 0efdb65953c5..a45785ab197b 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
| @@ -90,13 +90,14 @@ static noinline int cow_file_range(struct inode *inode, | |||
| 90 | unsigned long *nr_written, int unlock); | 90 | unsigned long *nr_written, int unlock); |
| 91 | 91 | ||
| 92 | static int btrfs_init_inode_security(struct btrfs_trans_handle *trans, | 92 | static int btrfs_init_inode_security(struct btrfs_trans_handle *trans, |
| 93 | struct inode *inode, struct inode *dir) | 93 | struct inode *inode, struct inode *dir, |
| 94 | const struct qstr *qstr) | ||
| 94 | { | 95 | { |
| 95 | int err; | 96 | int err; |
| 96 | 97 | ||
| 97 | err = btrfs_init_acl(trans, inode, dir); | 98 | err = btrfs_init_acl(trans, inode, dir); |
| 98 | if (!err) | 99 | if (!err) |
| 99 | err = btrfs_xattr_security_init(trans, inode, dir); | 100 | err = btrfs_xattr_security_init(trans, inode, dir, qstr); |
| 100 | return err; | 101 | return err; |
| 101 | } | 102 | } |
| 102 | 103 | ||
| @@ -4704,7 +4705,7 @@ static int btrfs_mknod(struct inode *dir, struct dentry *dentry, | |||
| 4704 | if (IS_ERR(inode)) | 4705 | if (IS_ERR(inode)) |
| 4705 | goto out_unlock; | 4706 | goto out_unlock; |
| 4706 | 4707 | ||
| 4707 | err = btrfs_init_inode_security(trans, inode, dir); | 4708 | err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); |
| 4708 | if (err) { | 4709 | if (err) { |
| 4709 | drop_inode = 1; | 4710 | drop_inode = 1; |
| 4710 | goto out_unlock; | 4711 | goto out_unlock; |
| @@ -4765,7 +4766,7 @@ static int btrfs_create(struct inode *dir, struct dentry *dentry, | |||
| 4765 | if (IS_ERR(inode)) | 4766 | if (IS_ERR(inode)) |
| 4766 | goto out_unlock; | 4767 | goto out_unlock; |
| 4767 | 4768 | ||
| 4768 | err = btrfs_init_inode_security(trans, inode, dir); | 4769 | err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); |
| 4769 | if (err) { | 4770 | if (err) { |
| 4770 | drop_inode = 1; | 4771 | drop_inode = 1; |
| 4771 | goto out_unlock; | 4772 | goto out_unlock; |
| @@ -4893,7 +4894,7 @@ static int btrfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
| 4893 | 4894 | ||
| 4894 | drop_on_err = 1; | 4895 | drop_on_err = 1; |
| 4895 | 4896 | ||
| 4896 | err = btrfs_init_inode_security(trans, inode, dir); | 4897 | err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); |
| 4897 | if (err) | 4898 | if (err) |
| 4898 | goto out_fail; | 4899 | goto out_fail; |
| 4899 | 4900 | ||
| @@ -7104,7 +7105,7 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry, | |||
| 7104 | if (IS_ERR(inode)) | 7105 | if (IS_ERR(inode)) |
| 7105 | goto out_unlock; | 7106 | goto out_unlock; |
| 7106 | 7107 | ||
| 7107 | err = btrfs_init_inode_security(trans, inode, dir); | 7108 | err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); |
| 7108 | if (err) { | 7109 | if (err) { |
| 7109 | drop_inode = 1; | 7110 | drop_inode = 1; |
| 7110 | goto out_unlock; | 7111 | goto out_unlock; |
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index a5776531dc2b..d779cefcfd7d 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
| @@ -370,7 +370,8 @@ int btrfs_removexattr(struct dentry *dentry, const char *name) | |||
| 370 | } | 370 | } |
| 371 | 371 | ||
| 372 | int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, | 372 | int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, |
| 373 | struct inode *inode, struct inode *dir) | 373 | struct inode *inode, struct inode *dir, |
| 374 | const struct qstr *qstr) | ||
| 374 | { | 375 | { |
| 375 | int err; | 376 | int err; |
| 376 | size_t len; | 377 | size_t len; |
| @@ -378,7 +379,8 @@ int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, | |||
| 378 | char *suffix; | 379 | char *suffix; |
| 379 | char *name; | 380 | char *name; |
| 380 | 381 | ||
| 381 | err = security_inode_init_security(inode, dir, &suffix, &value, &len); | 382 | err = security_inode_init_security(inode, dir, qstr, &suffix, &value, |
| 383 | &len); | ||
| 382 | if (err) { | 384 | if (err) { |
| 383 | if (err == -EOPNOTSUPP) | 385 | if (err == -EOPNOTSUPP) |
| 384 | return 0; | 386 | return 0; |
diff --git a/fs/btrfs/xattr.h b/fs/btrfs/xattr.h index 7a43fd640bbb..b3cc8039134b 100644 --- a/fs/btrfs/xattr.h +++ b/fs/btrfs/xattr.h | |||
| @@ -37,6 +37,7 @@ extern int btrfs_setxattr(struct dentry *dentry, const char *name, | |||
| 37 | extern int btrfs_removexattr(struct dentry *dentry, const char *name); | 37 | extern int btrfs_removexattr(struct dentry *dentry, const char *name); |
| 38 | 38 | ||
| 39 | extern int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, | 39 | extern int btrfs_xattr_security_init(struct btrfs_trans_handle *trans, |
| 40 | struct inode *inode, struct inode *dir); | 40 | struct inode *inode, struct inode *dir, |
| 41 | const struct qstr *qstr); | ||
| 41 | 42 | ||
| 42 | #endif /* __XATTR__ */ | 43 | #endif /* __XATTR__ */ |
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h index 6346a2acf326..1b48c3370872 100644 --- a/fs/ext2/ext2.h +++ b/fs/ext2/ext2.h | |||
| @@ -110,7 +110,7 @@ extern struct ext2_dir_entry_2 * ext2_dotdot (struct inode *, struct page **); | |||
| 110 | extern void ext2_set_link(struct inode *, struct ext2_dir_entry_2 *, struct page *, struct inode *, int); | 110 | extern void ext2_set_link(struct inode *, struct ext2_dir_entry_2 *, struct page *, struct inode *, int); |
| 111 | 111 | ||
| 112 | /* ialloc.c */ | 112 | /* ialloc.c */ |
| 113 | extern struct inode * ext2_new_inode (struct inode *, int); | 113 | extern struct inode * ext2_new_inode (struct inode *, int, const struct qstr *); |
| 114 | extern void ext2_free_inode (struct inode *); | 114 | extern void ext2_free_inode (struct inode *); |
| 115 | extern unsigned long ext2_count_free_inodes (struct super_block *); | 115 | extern unsigned long ext2_count_free_inodes (struct super_block *); |
| 116 | extern void ext2_check_inodes_bitmap (struct super_block *); | ||
