summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgkostka <kostka.grzegorz@gmail.com>2017-04-19 16:35:14 +0200
committergkostka <kostka.grzegorz@gmail.com>2017-04-19 16:35:14 +0200
commitdd3f008d8931f870814d139c4b61852cc4d449cb (patch)
treeadbb8e1a1830daf4c5dfaa1db8d39459a95f314b /src
parent782631e9388c38ac509823df916ea494e271a931 (diff)
ext4_journal: fix error handling in jbd_get_fs
Diffstat (limited to 'src')
-rw-r--r--src/ext4_journal.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/ext4_journal.c b/src/ext4_journal.c
index aa3322b..fbdf233 100644
--- a/src/ext4_journal.c
+++ b/src/ext4_journal.c
@@ -458,26 +458,27 @@ int jbd_get_fs(struct ext4_fs *fs,
rc = ext4_fs_get_inode_ref(fs,
journal_ino,
&jbd_fs->inode_ref);
- if (rc != EOK) {
- memset(jbd_fs, 0, sizeof(struct jbd_fs));
+ if (rc != EOK)
return rc;
- }
+
rc = jbd_sb_read(jbd_fs, &jbd_fs->sb);
- if (rc != EOK) {
- memset(jbd_fs, 0, sizeof(struct jbd_fs));
- ext4_fs_put_inode_ref(&jbd_fs->inode_ref);
- return rc;
- }
+ if (rc != EOK)
+ goto Error;
+
if (!jbd_verify_sb(&jbd_fs->sb)) {
- memset(jbd_fs, 0, sizeof(struct jbd_fs));
- ext4_fs_put_inode_ref(&jbd_fs->inode_ref);
rc = EIO;
+ goto Error;
}
if (rc == EOK)
jbd_fs->bdev = fs->bdev;
return rc;
+Error:
+ ext4_fs_put_inode_ref(&jbd_fs->inode_ref);
+ memset(jbd_fs, 0, sizeof(struct jbd_fs));
+
+ return rc;
}
/**@brief Put reference of jbd filesystem.