diff options
author | Jeff Mahoney <jeffm@suse.com> | 2009-03-30 14:02:41 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-30 15:16:39 -0400 |
commit | 57fe60df62410f949da094d06ced1dda9575b69c (patch) | |
tree | f3ba5db112cd7d2a8865d16bece28c38a766145c /fs/reiserfs/inode.c | |
parent | a41f1a4715f26f7bc4d047d0bc7710145c8e69c7 (diff) |
reiserfs: add atomic addition of selinux attributes during inode creation
Some time ago, some changes were made to make security inode attributes
be atomically written during inode creation. ReiserFS fell behind in
this area, but with the reworking of the xattr code, it's now fairly
easy to add.
The following patch adds the ability for security attributes to be added
automatically during inode creation.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/reiserfs/inode.c')
-rw-r--r-- | fs/reiserfs/inode.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 995f6975cae1..fcd302d81447 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c | |||
@@ -1747,7 +1747,8 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th, | |||
1747 | /* 0 for regular, EMTRY_DIR_SIZE for dirs, | 1747 | /* 0 for regular, EMTRY_DIR_SIZE for dirs, |
1748 | strlen (symname) for symlinks) */ | 1748 | strlen (symname) for symlinks) */ |
1749 | loff_t i_size, struct dentry *dentry, | 1749 | loff_t i_size, struct dentry *dentry, |
1750 | struct inode *inode) | 1750 | struct inode *inode, |
1751 | struct reiserfs_security_handle *security) | ||
1751 | { | 1752 | { |
1752 | struct super_block *sb; | 1753 | struct super_block *sb; |
1753 | struct reiserfs_iget_args args; | 1754 | struct reiserfs_iget_args args; |
@@ -1929,6 +1930,19 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th, | |||
1929 | } else if (IS_PRIVATE(dir)) | 1930 | } else if (IS_PRIVATE(dir)) |
1930 | inode->i_flags |= S_PRIVATE; | 1931 | inode->i_flags |= S_PRIVATE; |
1931 | 1932 | ||
1933 | if (security->name) { | ||
1934 | retval = reiserfs_security_write(th, inode, security); | ||
1935 | if (retval) { | ||
1936 | err = retval; | ||
1937 | reiserfs_check_path(&path_to_key); | ||
1938 | retval = journal_end(th, th->t_super, | ||
1939 | th->t_blocks_allocated); | ||
1940 | if (retval) | ||
1941 | err = retval; | ||
1942 | goto out_inserted_sd; | ||
1943 | } | ||
1944 | } | ||
1945 | |||
1932 | reiserfs_update_sd(th, inode); | 1946 | reiserfs_update_sd(th, inode); |
1933 | reiserfs_check_path(&path_to_key); | 1947 | reiserfs_check_path(&path_to_key); |
1934 | 1948 | ||