f2fs: fix to release node block count in error path of f2fs_new_node_page()

[ Upstream commit 0fa4e57c1d ]

It missed to call dec_valid_node_count() to release node block count
in error path, fix it.

Fixes: 141170b759 ("f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page()")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Chao Yu 2024-05-07 11:31:00 +08:00 committed by Greg Kroah-Hartman
parent b5bac43875
commit 3109022d9f

View File

@ -1300,6 +1300,7 @@ struct page *f2fs_new_node_page(struct dnode_of_data *dn, unsigned int ofs)
} }
if (unlikely(new_ni.blk_addr != NULL_ADDR)) { if (unlikely(new_ni.blk_addr != NULL_ADDR)) {
err = -EFSCORRUPTED; err = -EFSCORRUPTED;
dec_valid_node_count(sbi, dn->inode, !ofs);
set_sbi_flag(sbi, SBI_NEED_FSCK); set_sbi_flag(sbi, SBI_NEED_FSCK);
goto fail; goto fail;
} }
@ -1325,7 +1326,6 @@ struct page *f2fs_new_node_page(struct dnode_of_data *dn, unsigned int ofs)
if (ofs == 0) if (ofs == 0)
inc_valid_inode_count(sbi); inc_valid_inode_count(sbi);
return page; return page;
fail: fail:
clear_node_page_dirty(page); clear_node_page_dirty(page);
f2fs_put_page(page, 1); f2fs_put_page(page, 1);