Skip to content

Commit 2a4ae3b

Browse files
jankaratytso
authored andcommitted
ext4: fix timer use-after-free on failed mount
When filesystem mount fails because of corrupted filesystem we first cancel the s_err_report timer reminding fs errors every day and only then we flush s_error_work. However s_error_work may report another fs error and re-arm timer thus resulting in timer use-after-free. Fix the problem by first flushing the work and only after that canceling the s_err_report timer. Reported-by: syzbot+628472a2aac693ab0fcd@syzkaller.appspotmail.com Fixes: 2d01ddc ("ext4: save error info to sb through journal if available") CC: stable@vger.kernel.org Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20210315165906.2175-1-jack@suse.cz Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 7d8bd3c commit 2a4ae3b

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

fs/ext4/super.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5154,8 +5154,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
51545154
failed_mount3a:
51555155
ext4_es_unregister_shrinker(sbi);
51565156
failed_mount3:
5157-
del_timer_sync(&sbi->s_err_report);
51585157
flush_work(&sbi->s_error_work);
5158+
del_timer_sync(&sbi->s_err_report);
51595159
if (sbi->s_mmp_tsk)
51605160
kthread_stop(sbi->s_mmp_tsk);
51615161
failed_mount2:

0 commit comments

Comments
 (0)