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: [email protected] Fixes: 2d01ddc ("ext4: save error info to sb through journal if available") CC: [email protected] Signed-off-by: Jan Kara <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Theodore Ts'o <[email protected]>
1 parent 7d8bd3c commit 2a4ae3b

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

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)