From dd3f008d8931f870814d139c4b61852cc4d449cb Mon Sep 17 00:00:00 2001 From: gkostka Date: Wed, 19 Apr 2017 16:35:14 +0200 Subject: [PATCH] ext4_journal: fix error handling in jbd_get_fs --- src/ext4_journal.c | 21 +++++++++++---------- 1 file 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,25 +458,26 @@ 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; } -- 2.30.2