Skip to content
Permalink
Browse files Browse the repository at this point in the history
f2fs: fix a panic caused by NULL flush_cmd_control
Mount fs with option noflush_merge, boot failed for illegal address
fcc in function f2fs_issue_flush:

        if (!test_opt(sbi, FLUSH_MERGE)) {
                ret = submit_flush_wait(sbi);
                atomic_inc(&fcc->issued_flush);   ->  Here, fcc illegal
                return ret;
        }

Signed-off-by: Yunlei He <heyunlei@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
  • Loading branch information
Yunlei He authored and Jaegeuk Kim committed Jul 4, 2017
1 parent 68390dd commit d4fdf8b
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion fs/f2fs/segment.c
Expand Up @@ -566,6 +566,9 @@ int create_flush_cmd_control(struct f2fs_sb_info *sbi)
init_waitqueue_head(&fcc->flush_wait_queue);
init_llist_head(&fcc->issue_list);
SM_I(sbi)->fcc_info = fcc;
if (!test_opt(sbi, FLUSH_MERGE))
return err;

init_thread:
fcc->f2fs_issue_flush = kthread_run(issue_flush_thread, sbi,
"f2fs_flush-%u:%u", MAJOR(dev), MINOR(dev));
Expand Down Expand Up @@ -3240,7 +3243,7 @@ int build_segment_manager(struct f2fs_sb_info *sbi)

INIT_LIST_HEAD(&sm_info->sit_entry_set);

if (test_opt(sbi, FLUSH_MERGE) && !f2fs_readonly(sbi->sb)) {
if (!f2fs_readonly(sbi->sb)) {
err = create_flush_cmd_control(sbi);
if (err)
return err;
Expand Down

0 comments on commit d4fdf8b

Please sign in to comment.