diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index 445eef41bfaf00a948b5c29f3041703bba369dfa..2104be29417b6d052248b2dfdb41b1d0ad0d7018 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c @@ -2781,10 +2781,9 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root) return -ENOMEM; err = nilfs_segctor_start_thread(nilfs->ns_writer); - if (err) { - kfree(nilfs->ns_writer); - nilfs->ns_writer = NULL; - } + if (unlikely(err)) + nilfs_detach_log_writer(sb); + return err; }