f2fs: fix to avoid accessing invalid fio in f2fs_allocate_data_block()
authorChao Yu <yuchao0@huawei.com>
Fri, 2 Apr 2021 09:22:23 +0000 (17:22 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 6 Apr 2021 14:18:31 +0000 (07:18 -0700)
Callers may pass fio parameter with NULL value to f2fs_allocate_data_block(),
so we should make sure accessing fio's field after fio's validation check.

Fixes: f608c38c59c6 ("f2fs: clean up parameter of f2fs_allocate_data_block()")
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.c

index c517e689a9a398f359404d86ef871ffa8d9b5d2a..44897cfecb1eb78957e98aab875581ae81808d82 100644 (file)
@@ -3417,12 +3417,12 @@ void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
                f2fs_inode_chksum_set(sbi, page);
        }
 
-       if (F2FS_IO_ALIGNED(sbi))
-               fio->retry = false;
-
        if (fio) {
                struct f2fs_bio_info *io;
 
+               if (F2FS_IO_ALIGNED(sbi))
+                       fio->retry = false;
+
                INIT_LIST_HEAD(&fio->list);
                fio->in_list = true;
                io = sbi->write_io[fio->type] + fio->temp;