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>
This commit is contained in:
parent
c0b49b0d16
commit
8a459e44ad
@ -190,10 +190,13 @@ asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size,
|
|||||||
*/
|
*/
|
||||||
if (mapping_cap_account_dirty(mapping)) {
|
if (mapping_cap_account_dirty(mapping)) {
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
|
struct file *file = vma->vm_file;
|
||||||
|
|
||||||
flags &= MAP_NONBLOCK;
|
flags &= MAP_NONBLOCK;
|
||||||
addr = mmap_region(vma->vm_file, start, size,
|
get_file(file);
|
||||||
|
addr = mmap_region(file, start, size,
|
||||||
flags, vma->vm_flags, pgoff, 1);
|
flags, vma->vm_flags, pgoff, 1);
|
||||||
|
fput(file);
|
||||||
if (IS_ERR_VALUE(addr)) {
|
if (IS_ERR_VALUE(addr)) {
|
||||||
err = addr;
|
err = addr;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user