diff options
author | Dmitry Monakhov <dmonakhov@openvz.org> | 2010-03-04 09:32:18 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-05-21 18:31:26 -0400 |
commit | 454abafe9d8beb3fe7da06131b3d81d6d352a959 (patch) | |
tree | 4be9c50d76aecd2c43959550814fb4337d27c6d9 /mm/shmem.c | |
parent | 6a9e652c88fad648ea088ac07dbc671a9813f75e (diff) |
ramfs: replace inode uid,gid,mode initialization with helper function
- seems what ramfs_get_inode is only locally, make it static.
[AV: the hell it is; it's used by shmem, so shmem needed conversion too
and no, that function can't be made static]
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'mm/shmem.c')
-rw-r--r-- | mm/shmem.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/mm/shmem.c b/mm/shmem.c index 717aa62ff12..0cd7f66f1c6 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -1545,8 +1545,8 @@ static int shmem_mmap(struct file *file, struct vm_area_struct *vma) | |||
1545 | return 0; | 1545 | return 0; |
1546 | } | 1546 | } |
1547 | 1547 | ||
1548 | static struct inode *shmem_get_inode(struct super_block *sb, int mode, | 1548 | static struct inode *shmem_get_inode(struct super_block *sb, const struct inode *dir, |
1549 | dev_t dev, unsigned long flags) | 1549 | int mode, dev_t dev, unsigned long flags) |
1550 | { | 1550 | { |
1551 | struct inode *inode; | 1551 | struct inode *inode; |
1552 | struct shmem_inode_info *info; | 1552 | struct shmem_inode_info *info; |
@@ -1557,9 +1557,7 @@ static struct inode *shmem_get_inode(struct super_block *sb, int mode, | |||
1557 | 1557 | ||
1558 | inode = new_inode(sb); | 1558 | inode = new_inode(sb); |
1559 | if (inode) { | 1559 | if (inode) { |
1560 | inode->i_mode = mode; | 1560 | inode_init_owner(inode, dir, mode); |
1561 | inode->i_uid = current_fsuid(); | ||
1562 | inode->i_gid = current_fsgid(); | ||
1563 | inode->i_blocks = 0; | 1561 | inode->i_blocks = 0; |
1564 | inode->i_mapping->backing_dev_info = &shmem_backing_dev_info; | 1562 | inode->i_mapping->backing_dev_info = &shmem_backing_dev_info; |
1565 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 1563 | inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
@@ -1814,7 +1812,7 @@ shmem_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) | |||
1814 | struct inode *inode; | 1812 | struct inode *inode; |
1815 | int error = -ENOSPC; | 1813 | int error = -ENOSPC; |
1816 | 1814 | ||
1817 | inode = shmem_get_inode(dir->i_sb, mode, dev, VM_NORESERVE); | 1815 | inode = shmem_get_inode(dir->i_sb, dir, mode, dev, VM_NORESERVE); |
1818 | if (inode) { | 1816 | if (inode) { |
1819 | error = security_inode_init_security(inode, dir, NULL, NULL, | 1817 | error = security_inode_init_security(inode, dir, NULL, NULL, |
1820 | NULL); | 1818 | NULL); |
@@ -1833,11 +1831,6 @@ shmem_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) | |||
1833 | #else | 1831 | #else |
1834 | error = 0; | 1832 | error = 0; |
1835 | #endif | 1833 | #endif |
1836 | if (dir->i_mode & S_ISGID) { | ||
1837 | inode->i_gid = dir->i_gid; | ||
1838 | if (S_ISDIR(mode)) | ||
1839 | inode->i_mode |= S_ISGID; | ||
1840 | } | ||
1841 | dir->i_size += BOGO_DIRENT_SIZE; | 1834 | dir->i_size += BOGO_DIRENT_SIZE; |
1842 | dir->i_ctime = dir->i_mtime = CURRENT_TIME; | 1835 | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
1843 | d_instantiate(dentry, inode); | 1836 | d_instantiate(dentry, inode); |
@@ -1957,7 +1950,7 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s | |||
1957 | if (len > PAGE_CACHE_SIZE) | 1950 | if (len > PAGE_CACHE_SIZE) |
1958 | return -ENAMETOOLONG; | 1951 | return -ENAMETOOLONG; |
1959 | 1952 | ||
1960 | inode = shmem_get_inode(dir->i_sb, S_IFLNK|S_IRWXUGO, 0, VM_NORESERVE); | 1953 | inode = shmem_get_inode(dir->i_sb, dir, S_IFLNK|S_IRWXUGO, 0, VM_NORESERVE); |
1961 | if (!inode) | 1954 | if (!inode) |
1962 | return -ENOSPC; | 1955 | return -ENOSPC; |
1963 | 1956 | ||
@@ -1992,8 +1985,6 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s | |||
1992 | unlock_page(page); | 1985 | unlock_page(page); |
1993 | page_cache_release(page); | 1986 | page_cache_release(page); |
1994 | } | 1987 | } |
1995 | if (dir->i_mode & S_ISGID) | ||
1996 | inode->i_gid = dir->i_gid; | ||
1997 | dir->i_size += BOGO_DIRENT_SIZE; | 1988 | dir->i_size += BOGO_DIRENT_SIZE; |
1998 | dir->i_ctime = dir->i_mtime = CURRENT_TIME; | 1989 | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
1999 | d_instantiate(dentry, inode); | 1990 | d_instantiate(dentry, inode); |
@@ -2366,7 +2357,7 @@ int shmem_fill_super(struct super_block *sb, void *data, int silent) | |||
2366 | sb->s_flags |= MS_POSIXACL; | 2357 | sb->s_flags |= MS_POSIXACL; |
2367 | #endif | 2358 | #endif |
2368 | 2359 | ||
2369 | inode = shmem_get_inode(sb, S_IFDIR | sbinfo->mode, 0, VM_NORESERVE); | 2360 | inode = shmem_get_inode(sb, NULL, S_IFDIR | sbinfo->mode, 0, VM_NORESERVE); |
2370 | if (!inode) | 2361 | if (!inode) |
2371 | goto failed; | 2362 | goto failed; |
2372 | inode->i_uid = sbinfo->uid; | 2363 | inode->i_uid = sbinfo->uid; |
@@ -2611,7 +2602,7 @@ int shmem_lock(struct file *file, int lock, struct user_struct *user) | |||
2611 | 2602 | ||
2612 | #define shmem_vm_ops generic_file_vm_ops | 2603 | #define shmem_vm_ops generic_file_vm_ops |
2613 | #define shmem_file_operations ramfs_file_operations | 2604 | #define shmem_file_operations ramfs_file_operations |
2614 | #define shmem_get_inode(sb, mode, dev, flags) ramfs_get_inode(sb, mode, dev) | 2605 | #define shmem_get_inode(sb, dir, mode, dev, flags) ramfs_get_inode(sb, dir, mode, dev) |
2615 | #define shmem_acct_size(flags, size) 0 | 2606 | #define shmem_acct_size(flags, size) 0 |
2616 | #define shmem_unacct_size(flags, size) do {} while (0) | 2607 | #define shmem_unacct_size(flags, size) do {} while (0) |
2617 | #define SHMEM_MAX_BYTES MAX_LFS_FILESIZE | 2608 | #define SHMEM_MAX_BYTES MAX_LFS_FILESIZE |
@@ -2655,7 +2646,7 @@ struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags | |||
2655 | path.mnt = mntget(shm_mnt); | 2646 | path.mnt = mntget(shm_mnt); |
2656 | 2647 | ||
2657 | error = -ENOSPC; | 2648 | error = -ENOSPC; |
2658 | inode = shmem_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0, flags); | 2649 | inode = shmem_get_inode(root->d_sb, NULL, S_IFREG | S_IRWXUGO, 0, flags); |
2659 | if (!inode) | 2650 | if (!inode) |
2660 | goto put_dentry; | 2651 | goto put_dentry; |
2661 | 2652 | ||