From deb8c62c351f3fb8af1a1d938c76a9ea9f002b49 Mon Sep 17 00:00:00 2001 From: Li Guifu Date: Sun, 22 Nov 2020 16:55:03 +0800 Subject: erofs-utils: stop building tree if file fails to open stop and exit immediately if it fails to open a file, e.g mkfs.erofs doesn't run under the root user (e.g. run without sudo.) Link: https://lore.kernel.org/r/20201122085503.35139-1-bluce.lee@aliyun.com Signed-off-by: Li Guifu Signed-off-by: Gao Xiang --- lib/inode.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/inode.c b/lib/inode.c index fee5c96..eb2e0f2 100644 --- a/lib/inode.c +++ b/lib/inode.c @@ -908,7 +908,9 @@ struct erofs_inode *erofs_mkfs_build_tree(struct erofs_inode *dir) if (ret) return ERR_PTR(ret); } else { - erofs_write_file(dir); + ret = erofs_write_file(dir); + if (ret) + return ERR_PTR(ret); } erofs_prepare_inode_buffer(dir); @@ -982,10 +984,11 @@ struct erofs_inode *erofs_mkfs_build_tree(struct erofs_inode *dir) d->inode = erofs_mkfs_build_tree_from_path(dir, buf); if (IS_ERR(d->inode)) { + ret = PTR_ERR(d->inode); fail: d->inode = NULL; d->type = EROFS_FT_UNKNOWN; - continue; + goto err_closedir; } d->type = erofs_type_by_mode[d->inode->i_mode >> S_SHIFT]; -- cgit v1.2.3