diff options
author | Li Guifu <bluce.lee@aliyun.com> | 2020-11-22 16:55:03 +0800 |
---|---|---|
committer | Gao Xiang <hsiangkao@aol.com> | 2020-11-22 18:07:34 +0800 |
commit | deb8c62c351f3fb8af1a1d938c76a9ea9f002b49 (patch) | |
tree | 437d31f0a1e3895f9dd30340a3cd3b3fb1e0f3cf /lib/inode.c | |
parent | ac8f789cb2f45c59d95e08fab8b9b06251c02afc (diff) |
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 <bluce.lee@aliyun.com>
Signed-off-by: Gao Xiang <hsiangkao@aol.com>
Diffstat (limited to 'lib/inode.c')
-rw-r--r-- | lib/inode.c | 7 |
1 files 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]; |