From 8300aaba8e8d6a755718313e7169534f021c8cf2 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Fri, 20 Oct 2023 06:43:28 +0800 Subject: [PATCH] erofs-utils: fix reference leak in erofs_mkfs_build_tree_from_path() commit 8cbc205185a1 ("erofs-utils: mkfs: fix corrupted directories with hardlinks") introduced a reference leak although it has no real impact to users. Fix it now. Signed-off-by: Gao Xiang Link: https://lore.kernel.org/r/20231019224328.26015-1-xiang@kernel.org --- lib/inode.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/inode.c b/lib/inode.c index 71af396..8409ccd 100644 --- a/lib/inode.c +++ b/lib/inode.c @@ -1271,13 +1271,18 @@ struct erofs_inode *erofs_mkfs_build_tree_from_path(const char *path) if (S_ISDIR(inode->i_mode)) { inode->next_dirwrite = dumpdir; dumpdir = inode; + } else { + erofs_iput(inode); } } while (!list_empty(&dirs)); - for (; dumpdir; dumpdir = dumpdir->next_dirwrite) { - erofs_write_dir_file(dumpdir); - erofs_write_tail_end(dumpdir); - dumpdir->bh->op = &erofs_write_inode_bhops; + while (dumpdir) { + inode = dumpdir; + erofs_write_dir_file(inode); + erofs_write_tail_end(inode); + inode->bh->op = &erofs_write_inode_bhops; + dumpdir = inode->next_dirwrite; + erofs_iput(inode); } return root; } -- 2.34.1