Commit 8a459e44ad837018ea5c34a9efe8eb4ad27ded26
Committed by
Linus Torvalds
1 parent
c0b49b0d16
Exists in
master
and in
4 other branches
sys_remap_file_pages: fix ->vm_file accounting
Fix ->vm_file accounting, mmap_region() may do do_munmap(). Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 4 additions and 1 deletions Side-by-side Diff
mm/fremap.c
... | ... | @@ -190,10 +190,13 @@ |
190 | 190 | */ |
191 | 191 | if (mapping_cap_account_dirty(mapping)) { |
192 | 192 | unsigned long addr; |
193 | + struct file *file = vma->vm_file; | |
193 | 194 | |
194 | 195 | flags &= MAP_NONBLOCK; |
195 | - addr = mmap_region(vma->vm_file, start, size, | |
196 | + get_file(file); | |
197 | + addr = mmap_region(file, start, size, | |
196 | 198 | flags, vma->vm_flags, pgoff, 1); |
199 | + fput(file); | |
197 | 200 | if (IS_ERR_VALUE(addr)) { |
198 | 201 | err = addr; |
199 | 202 | } else { |