diff options
Diffstat (limited to 'fs/ramfs/file-nommu.c')
| -rw-r--r-- | fs/ramfs/file-nommu.c | 26 |
1 files changed, 1 insertions, 25 deletions
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c index 2efc57173fd7..1739a4aba25f 100644 --- a/fs/ramfs/file-nommu.c +++ b/fs/ramfs/file-nommu.c | |||
| @@ -123,30 +123,6 @@ add_error: | |||
| 123 | 123 | ||
| 124 | /*****************************************************************************/ | 124 | /*****************************************************************************/ |
| 125 | /* | 125 | /* |
| 126 | * check that file shrinkage doesn't leave any VMAs dangling in midair | ||
| 127 | */ | ||
| 128 | static int ramfs_nommu_check_mappings(struct inode *inode, | ||
| 129 | size_t newsize, size_t size) | ||
| 130 | { | ||
| 131 | struct vm_area_struct *vma; | ||
| 132 | struct prio_tree_iter iter; | ||
| 133 | |||
| 134 | /* search for VMAs that fall within the dead zone */ | ||
| 135 | vma_prio_tree_foreach(vma, &iter, &inode->i_mapping->i_mmap, | ||
| 136 | newsize >> PAGE_SHIFT, | ||
| 137 | (size + PAGE_SIZE - 1) >> PAGE_SHIFT | ||
| 138 | ) { | ||
| 139 | /* found one - only interested if it's shared out of the page | ||
| 140 | * cache */ | ||
| 141 | if (vma->vm_flags & VM_SHARED) | ||
| 142 | return -ETXTBSY; /* not quite true, but near enough */ | ||
| 143 | } | ||
| 144 | |||
| 145 | return 0; | ||
| 146 | } | ||
| 147 | |||
| 148 | /*****************************************************************************/ | ||
| 149 | /* | ||
| 150 | * | 126 | * |
| 151 | */ | 127 | */ |
| 152 | static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) | 128 | static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) |
| @@ -164,7 +140,7 @@ static int ramfs_nommu_resize(struct inode *inode, loff_t newsize, loff_t size) | |||
| 164 | 140 | ||
| 165 | /* check that a decrease in size doesn't cut off any shared mappings */ | 141 | /* check that a decrease in size doesn't cut off any shared mappings */ |
| 166 | if (newsize < size) { | 142 | if (newsize < size) { |
| 167 | ret = ramfs_nommu_check_mappings(inode, newsize, size); | 143 | ret = nommu_shrink_inode_mappings(inode, size, newsize); |
| 168 | if (ret < 0) | 144 | if (ret < 0) |
| 169 | return ret; | 145 | return ret; |
| 170 | } | 146 | } |
