summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Dinh <[email protected]>2025-08-26 12:37:17 -0700
committerTom Rini <[email protected]>2025-09-10 10:38:56 -0600
commit1f8fd9d37d69ecc269943a273d3bca4c1be2384e (patch)
tree5a9a5ba704e553e596affd6ca8c25eff7e4d8622
parent371a76e845504c9ba7ca216b6edfb4ae4ec14e56 (diff)
fs: ext4fs: Add initialization failure recovery path in ext4fs_write
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]> Reviewed-by: Tom Rini <[email protected]>
-rw-r--r--fs/ext4/ext4_write.c4
1 files changed, 3 insertions, 1 deletions
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);