ext4: Fix timer use-after-free on failed mount
Subsystems (2)
Jan Kara
reviewerPATCH 1/1 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.
--- fs/ext4/super.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/ext4/super.c +1 -1
@@ -5149,8 +5149,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) failed_mount3a:ext4_es_unregister_shrinker (sbi); failed_mount3: -del_timer_sync (&sbi->s_err_report);flush_work (&sbi->s_error_work); +del_timer_sync (&sbi->s_err_report);if (sbi->s_mmp_tsk)kthread_stop (sbi->s_mmp_tsk); failed_mount2:
Signature · 1 line
2.26.2
Quoted 11 lines · Jan Kara
When filesystem mount fails because of corrupted filesystem we first cancel the
s_err_reporttimer reminding fs errors every day and only then we flushs_error_work. Howevers_error_workmay 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 thes_err_reporttimer.Reported-by [email protected]Fixes 2d01ddc86606 ("ext4: save error info to sb through journal if available")Signed-off-by Jan Kara <[email protected]>
Thanks, applied.
- Ted