If no hidden directory exists, the hfsplus_fill_super() function will create it. A delayed work is then queued to sync the superblock, which is never canceled in case of failure. Fix this. Fixes: 9e6c5829b07c ("hfsplus: get rid of write_super") Reported-by: syzbot+4f2e5f086147d543ab03@xxxxxxxxxxxxxxxxxxxxxxxxx Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@xxxxxxxxx> --- fs/hfsplus/super.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index 513c357c734b..4bc49e3f171d 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c @@ -588,6 +588,8 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) return 0; out_put_hidden_dir: + /* Creating an inode queues the sb for synchronization */ + cancel_delayed_work_sync(&sbi->sync_work); iput(sbi->hidden_dir); out_put_root: dput(sb->s_root); -- 2.11.0