diff options
| author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
|---|---|---|
| committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
| commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
| tree | 644b88f8a71896307d71438e9b3af49126ffb22b /fs/hugetlbfs/inode.c | |
| parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
| parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) | |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'fs/hugetlbfs/inode.c')
| -rw-r--r-- | fs/hugetlbfs/inode.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 87a1258953b8..a0bbd3d1b41a 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c | |||
| @@ -30,7 +30,6 @@ | |||
| 30 | #include <linux/dnotify.h> | 30 | #include <linux/dnotify.h> |
| 31 | #include <linux/statfs.h> | 31 | #include <linux/statfs.h> |
| 32 | #include <linux/security.h> | 32 | #include <linux/security.h> |
| 33 | #include <linux/ima.h> | ||
| 34 | #include <linux/magic.h> | 33 | #include <linux/magic.h> |
| 35 | 34 | ||
| 36 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
| @@ -922,7 +921,8 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag, | |||
| 922 | int error = -ENOMEM; | 921 | int error = -ENOMEM; |
| 923 | struct file *file; | 922 | struct file *file; |
| 924 | struct inode *inode; | 923 | struct inode *inode; |
| 925 | struct dentry *dentry, *root; | 924 | struct path path; |
| 925 | struct dentry *root; | ||
| 926 | struct qstr quick_string; | 926 | struct qstr quick_string; |
| 927 | 927 | ||
| 928 | *user = NULL; | 928 | *user = NULL; |
| @@ -944,10 +944,11 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag, | |||
| 944 | quick_string.name = name; | 944 | quick_string.name = name; |
| 945 | quick_string.len = strlen(quick_string.name); | 945 | quick_string.len = strlen(quick_string.name); |
| 946 | quick_string.hash = 0; | 946 | quick_string.hash = 0; |
| 947 | dentry = d_alloc(root, &quick_string); | 947 | path.dentry = d_alloc(root, &quick_string); |
| 948 | if (!dentry) | 948 | if (!path.dentry) |
| 949 | goto out_shm_unlock; | 949 | goto out_shm_unlock; |
| 950 | 950 | ||
| 951 | path.mnt = mntget(hugetlbfs_vfsmount); | ||
| 951 | error = -ENOSPC; | 952 | error = -ENOSPC; |
| 952 | inode = hugetlbfs_get_inode(root->d_sb, current_fsuid(), | 953 | inode = hugetlbfs_get_inode(root->d_sb, current_fsuid(), |
| 953 | current_fsgid(), S_IFREG | S_IRWXUGO, 0); | 954 | current_fsgid(), S_IFREG | S_IRWXUGO, 0); |
| @@ -960,24 +961,22 @@ struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag, | |||
| 960 | acctflag)) | 961 | acctflag)) |
| 961 | goto out_inode; | 962 | goto out_inode; |
| 962 | 963 | ||
| 963 | d_instantiate(dentry, inode); | 964 | d_instantiate(path.dentry, inode); |
| 964 | inode->i_size = size; | 965 | inode->i_size = size; |
| 965 | inode->i_nlink = 0; | 966 | inode->i_nlink = 0; |
| 966 | 967 | ||
| 967 | error = -ENFILE; | 968 | error = -ENFILE; |
| 968 | file = alloc_file(hugetlbfs_vfsmount, dentry, | 969 | file = alloc_file(&path, FMODE_WRITE | FMODE_READ, |
| 969 | FMODE_WRITE | FMODE_READ, | ||
| 970 | &hugetlbfs_file_operations); | 970 | &hugetlbfs_file_operations); |
| 971 | if (!file) | 971 | if (!file) |
| 972 | goto out_dentry; /* inode is already attached */ | 972 | goto out_dentry; /* inode is already attached */ |
| 973 | ima_counts_get(file); | ||
| 974 | 973 | ||
| 975 | return file; | 974 | return file; |
| 976 | 975 | ||
| 977 | out_inode: | 976 | out_inode: |
| 978 | iput(inode); | 977 | iput(inode); |
| 979 | out_dentry: | 978 | out_dentry: |
| 980 | dput(dentry); | 979 | path_put(&path); |
| 981 | out_shm_unlock: | 980 | out_shm_unlock: |
| 982 | if (*user) { | 981 | if (*user) { |
| 983 | user_shm_unlock(size, *user); | 982 | user_shm_unlock(size, *user); |
