فهرست منبع

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>
Oleg Nesterov 17 سال پیش
والد
کامیت
8a459e44ad
1فایلهای تغییر یافته به همراه4 افزوده شده و 1 حذف شده
  1. 4 1
      mm/fremap.c

+ 4 - 1
mm/fremap.c

@@ -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 {