|
@@ -549,16 +549,12 @@ got:
|
|
|
|
|
|
sb->s_dirt = 1;
|
|
|
mark_buffer_dirty(bh2);
|
|
|
- inode->i_uid = current_fsuid();
|
|
|
- if (test_opt (sb, GRPID))
|
|
|
+ if (test_opt(sb, GRPID)) {
|
|
|
+ inode->i_mode = mode;
|
|
|
+ inode->i_uid = current_fsuid();
|
|
|
inode->i_gid = dir->i_gid;
|
|
|
- else if (dir->i_mode & S_ISGID) {
|
|
|
- inode->i_gid = dir->i_gid;
|
|
|
- if (S_ISDIR(mode))
|
|
|
- mode |= S_ISGID;
|
|
|
} else
|
|
|
- inode->i_gid = current_fsgid();
|
|
|
- inode->i_mode = mode;
|
|
|
+ inode_init_owner(inode, dir, mode);
|
|
|
|
|
|
inode->i_ino = ino;
|
|
|
inode->i_blocks = 0;
|