--- mm/fremap.c 2014-02-22 22:41:54.000000000 +0200 +++ mm/fremap.c.orig 2014-02-24 20:50:06.000000000 +0200 @@ -202,12 +202,13 @@ get_write_lock: */ if (mapping_cap_account_dirty(mapping)) { unsigned long addr; - struct file *file = get_file(vma->vm_file); + struct file *file = vma->vm_file; /* mmap_region may free vma; grab the info now */ vm_flags = vma->vm_flags; + vma_get_file(vma); addr = mmap_region(file, start, size, vm_flags, pgoff); - fput(file); + vma_fput(vma); if (IS_ERR_VALUE(addr)) { err = addr; } else {