diff options
| author | gkostka <kostka.grzegorz@gmail.com> | 2017-04-19 16:35:14 +0200 |
|---|---|---|
| committer | gkostka <kostka.grzegorz@gmail.com> | 2017-04-19 16:35:14 +0200 |
| commit | dd3f008d8931f870814d139c4b61852cc4d449cb (patch) | |
| tree | adbb8e1a1830daf4c5dfaa1db8d39459a95f314b /src | |
| parent | 782631e9388c38ac509823df916ea494e271a931 (diff) | |
ext4_journal: fix error handling in jbd_get_fs
Diffstat (limited to 'src')
| -rw-r--r-- | src/ext4_journal.c | 21 |
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. |
