Don't invoke ext4fs_deinit() in ext4fs_write() if the failure occurs
during initialization. It would result in a crash since ext4fs_init()
has already done that.

Signed-off-by: Tony Dinh <[email protected]>
---
 fs/ext4/ext4_write.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/ext4_write.c b/fs/ext4/ext4_write.c
index dd8ed40f888..5b290f0d80d 100644
--- a/fs/ext4/ext4_write.c
+++ b/fs/ext4/ext4_write.c
@@ -877,7 +877,8 @@ int ext4fs_write(const char *fname, const char *buffer,
 
        if (ext4fs_init() != 0) {
                printf("error in File System init\n");
-               goto fail;
+               /* Skip ext4fs_deinit since ext4fs_init() already done that */
+               goto fail_init;
        }
 
        missing_feat = le32_to_cpu(fs->sb->feature_incompat) & 
~EXT4_FEATURE_INCOMPAT_SUPP;
@@ -1050,6 +1051,7 @@ int ext4fs_write(const char *fname, const char *buffer,
        return 0;
 fail:
        ext4fs_deinit();
+fail_init:
        free(inode_buffer);
        free(g_parent_inode);
        free(temp_ptr);
-- 
2.39.5

Reply via email to