diff options
Diffstat (limited to 'mm/tiny-shmem.c')
-rw-r--r-- | mm/tiny-shmem.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/mm/tiny-shmem.c b/mm/tiny-shmem.c index 8803471593fd..d436a9c82db7 100644 --- a/mm/tiny-shmem.c +++ b/mm/tiny-shmem.c | |||
@@ -66,24 +66,19 @@ struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) | |||
66 | if (!dentry) | 66 | if (!dentry) |
67 | goto put_memory; | 67 | goto put_memory; |
68 | 68 | ||
69 | error = -ENFILE; | ||
70 | file = get_empty_filp(); | ||
71 | if (!file) | ||
72 | goto put_dentry; | ||
73 | |||
74 | error = -ENOSPC; | 69 | error = -ENOSPC; |
75 | inode = ramfs_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0); | 70 | inode = ramfs_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0); |
76 | if (!inode) | 71 | if (!inode) |
77 | goto close_file; | 72 | goto put_dentry; |
78 | 73 | ||
79 | d_instantiate(dentry, inode); | 74 | d_instantiate(dentry, inode); |
80 | inode->i_nlink = 0; /* It is unlinked */ | 75 | error = -ENFILE; |
76 | file = alloc_file(shm_mnt, dentry, FMODE_WRITE | FMODE_READ, | ||
77 | &ramfs_file_operations); | ||
78 | if (!file) | ||
79 | goto put_dentry; | ||
81 | 80 | ||
82 | file->f_path.mnt = mntget(shm_mnt); | 81 | inode->i_nlink = 0; /* It is unlinked */ |
83 | file->f_path.dentry = dentry; | ||
84 | file->f_mapping = inode->i_mapping; | ||
85 | file->f_op = &ramfs_file_operations; | ||
86 | file->f_mode = FMODE_WRITE | FMODE_READ; | ||
87 | 82 | ||
88 | /* notify everyone as to the change of file size */ | 83 | /* notify everyone as to the change of file size */ |
89 | error = do_truncate(dentry, size, 0, file); | 84 | error = do_truncate(dentry, size, 0, file); |