It would not has the permission to access one file when mkfs.erofs
was not run in the root mode, eg run without sudo, So stop and
exit immediately

Signed-off-by: Li Guifu <bluce....@aliyun.com>
---
 lib/inode.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/inode.c b/lib/inode.c
index fee5c96..4641561 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -364,6 +364,7 @@ int erofs_write_file(struct erofs_inode *inode)
        }
 
        /* fallback to all data uncompressed */
+       errno = 0;
        fd = open(inode->i_srcpath, O_RDONLY | O_BINARY);
        if (fd < 0)
                return -errno;
@@ -908,7 +909,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 +985,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];
-- 
2.17.1

Reply via email to