f2fs: fix to avoid using uninitialized variable
authorChao Yu <yuchao0@huawei.com>
Mon, 2 Mar 2020 09:34:27 +0000 (17:34 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 10 Mar 2020 16:18:33 +0000 (09:18 -0700)
In f2fs_vm_page_mkwrite(), if inode is compress one, and current mmapped
page locates in compressed cluster, we have to call f2fs_get_dnode_of_data()
to get its physical block address before f2fs_wait_on_block_writeback().

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/file.c

index 8c72511..b443dc2 100644 (file)
@@ -106,10 +106,18 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf)
                err = f2fs_get_block(&dn, page->index);
                f2fs_put_dnode(&dn);
                __do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, false);
-               if (err) {
-                       unlock_page(page);
-                       goto out_sem;
-               }
+       }
+
+#ifdef CONFIG_F2FS_FS_COMPRESSION
+       if (!need_alloc) {
+               set_new_dnode(&dn, inode, NULL, NULL, 0);
+               err = f2fs_get_dnode_of_data(&dn, page->index, LOOKUP_NODE);
+               f2fs_put_dnode(&dn);
+       }
+#endif
+       if (err) {
+               unlock_page(page);
+               goto out_sem;
        }
 
        f2fs_wait_on_page_writeback(page, DATA, false, true);