From: gkostka Date: Wed, 19 Apr 2017 14:35:14 +0000 (+0200) Subject: ext4_journal: fix error handling in jbd_get_fs X-Git-Url: https://git.carlh.net/gitweb/?p=lwext4.git;a=commitdiff_plain;h=dd3f008d8931f870814d139c4b61852cc4d449cb ext4_journal: fix error handling in jbd_get_fs --- 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; }