The kernel implementation has the same constraint, so the code can be shared.
Fixes: 9fd2a2250fa9 ("erofs-utils: fuse: switch to FUSE 2/3 lowlevel APIs") Fixes: f44043561491 ("erofs-utils: introduce fsck.erofs") Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com> --- fsck/main.c | 5 +---- fuse/main.c | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/fsck/main.c b/fsck/main.c index 0e8b944..f7e33c0 100644 --- a/fsck/main.c +++ b/fsck/main.c @@ -974,12 +974,9 @@ verify: static int erofsfsck_check_inode(erofs_nid_t pnid, erofs_nid_t nid) { int ret, i; - struct erofs_inode inode; + struct erofs_inode inode = {.sbi = &g_sbi, .nid = nid}; erofs_dbg("check inode: nid(%llu)", nid | 0ULL); - - inode.nid = nid; - inode.sbi = &g_sbi; ret = erofs_read_inode_from_disk(&inode); if (ret) { if (ret == -EIO) diff --git a/fuse/main.c b/fuse/main.c index cb2759e..db4f323 100644 --- a/fuse/main.c +++ b/fuse/main.c @@ -231,7 +231,7 @@ static void erofsfuse_open(fuse_req_t req, fuse_ino_t ino, return; } - vi = (struct erofs_inode *)malloc(sizeof(struct erofs_inode)); + vi = calloc(1, sizeof(struct erofs_inode)); if (!vi) { fuse_reply_err(req, ENOMEM); return; @@ -281,7 +281,7 @@ static void erofsfuse_opendir(fuse_req_t req, fuse_ino_t ino, int ret; struct erofs_inode *vi; - vi = (struct erofs_inode *)malloc(sizeof(struct erofs_inode)); + vi = calloc(1, sizeof(struct erofs_inode)); if (!vi) { fuse_reply_err(req, ENOMEM); return; @@ -324,7 +324,7 @@ static void erofsfuse_lookup(fuse_req_t req, fuse_ino_t parent, struct fuse_entry_param fentry = { 0 }; struct erofsfuse_lookupdir_context ctx = { 0 }; - vi = (struct erofs_inode *)malloc(sizeof(struct erofs_inode)); + vi = calloc(1, sizeof(struct erofs_inode)); if (!vi) { fuse_reply_err(req, ENOMEM); return; -- 2.43.5