summaryrefslogtreecommitdiffstats
path: root/mm/tiny-shmem.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-10-10 09:25:29 +0200
committerIngo Molnar <mingo@elte.hu>2008-10-10 09:25:29 +0200
commit8eb95f28f66b1a5461fdbcc9a1ee9068fb2cf2b6 (patch)
treee42d0e004b07f86d38de930fc163f3ca7d121f9c /mm/tiny-shmem.c
parentd7451fca18e2ec62641ae4bbfe946069f13765a3 (diff)
parent3fa8749e584b55f1180411ab1b51117190bac1e5 (diff)
downloadlinux-8eb95f28f66b1a5461fdbcc9a1ee9068fb2cf2b6.tar.gz
linux-8eb95f28f66b1a5461fdbcc9a1ee9068fb2cf2b6.tar.bz2
linux-8eb95f28f66b1a5461fdbcc9a1ee9068fb2cf2b6.zip
Merge commit 'v2.6.27' into timers/hpet
Diffstat (limited to 'mm/tiny-shmem.c')
-rw-r--r--mm/tiny-shmem.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/mm/tiny-shmem.c b/mm/tiny-shmem.c
index ae532f501943..8d7a27a6335c 100644
--- a/mm/tiny-shmem.c
+++ b/mm/tiny-shmem.c
@@ -65,31 +65,31 @@ struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags)
if (!dentry)
goto put_memory;
+ error = -ENFILE;
+ file = get_empty_filp();
+ if (!file)
+ goto put_dentry;
+
error = -ENOSPC;
inode = ramfs_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0);
if (!inode)
- goto put_dentry;
+ goto close_file;
d_instantiate(dentry, inode);
- error = -ENFILE;
- file = alloc_file(shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
- &ramfs_file_operations);
- if (!file)
- goto put_dentry;
-
+ inode->i_size = size;
inode->i_nlink = 0; /* It is unlinked */
+ init_file(file, shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
+ &ramfs_file_operations);
- /* notify everyone as to the change of file size */
- error = do_truncate(dentry, size, 0, file);
- if (error < 0)
+#ifndef CONFIG_MMU
+ error = ramfs_nommu_expand_for_mapping(inode, size);
+ if (error)
goto close_file;
-
+#endif
return file;
close_file:
put_filp(file);
- return ERR_PTR(error);
-
put_dentry:
dput(dentry);
put_memory: