]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
f2fs: fix to release node block count in error path of f2fs_new_node_page()
authorChao Yu <chao@kernel.org>
Tue, 7 May 2024 03:31:00 +0000 (11:31 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 16 Jun 2024 11:39:39 +0000 (13:39 +0200)
[ Upstream commit 0fa4e57c1db263effd72d2149d4e21da0055c316 ]

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

Fixes: 141170b759e0 ("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>
fs/f2fs/node.c

index dc85dd55314ccb7a3ae90384032851a5ad65fe17..b6758887540f2972163e93be99f1df573200c04d 100644 (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)) {
                err = -EFSCORRUPTED;
+               dec_valid_node_count(sbi, dn->inode, !ofs);
                set_sbi_flag(sbi, SBI_NEED_FSCK);
                goto fail;
        }
@@ -1325,7 +1326,6 @@ struct page *f2fs_new_node_page(struct dnode_of_data *dn, unsigned int ofs)
        if (ofs == 0)
                inc_valid_inode_count(sbi);
        return page;
-
 fail:
        clear_node_page_dirty(page);
        f2fs_put_page(page, 1);