Release bh_check in case of error.
Seagate-bug-id: MRP-2337
Signed-off-by: Jadhav Vikram <jadhav.vikram@seagate.com>
Signed-off-by: Rahul Deshmukh <rahul.deshmukh@seagate.com>
Signed-off-by: Andriy Skulysh <andriy.skulysh@seagate.com>
Change-Id: I818dbaa22d61e1cc7e66f97c218333e39c6c8afa
Reviewed-on: http://review.whamcloud.com/15872
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
===================================================================
--- /dev/null
+++ linux-stage/fs/ext4/mmp.c
===================================================================
--- /dev/null
+++ linux-stage/fs/ext4/mmp.c
+#include <linux/fs.h>
+#include <linux/random.h>
+#include <linux/buffer_head.h>
+#include <linux/fs.h>
+#include <linux/random.h>
+#include <linux/buffer_head.h>
+ }
+
+ mmp = (struct mmp_struct *)((*bh)->b_data);
+ }
+
+ mmp = (struct mmp_struct *)((*bh)->b_data);
-+ if (le32_to_cpu(mmp->mmp_magic) != EXT4_MMP_MAGIC)
++ if (le32_to_cpu(mmp->mmp_magic) != EXT4_MMP_MAGIC) {
++ brelse(*bh);
+ if (retval) {
+ ext4_error(sb, "error reading MMP data: %d",
+ retval);
+ if (retval) {
+ ext4_error(sb, "error reading MMP data: %d",
+ retval);
+ EXT4_SB(sb)->s_mmp_tsk = NULL;
+ goto failed;
+ }
+ EXT4_SB(sb)->s_mmp_tsk = NULL;
+ goto failed;
+ }
+ "The filesystem seems to have been"
+ " multiply mounted.");
+ ext4_error(sb, "abort");
+ "The filesystem seems to have been"
+ " multiply mounted.");
+ ext4_error(sb, "abort");
+ goto failed;
+ }
+ put_bh(bh_check);
+ goto failed;
+ }
+ put_bh(bh_check);
===================================================================
--- /dev/null
+++ linux-stage/fs/ext4/mmp.c
===================================================================
--- /dev/null
+++ linux-stage/fs/ext4/mmp.c
+#include <linux/fs.h>
+#include <linux/random.h>
+#include <linux/buffer_head.h>
+#include <linux/fs.h>
+#include <linux/random.h>
+#include <linux/buffer_head.h>
+ }
+
+ mmp = (struct mmp_struct *)((*bh)->b_data);
+ }
+
+ mmp = (struct mmp_struct *)((*bh)->b_data);
-+ if (le32_to_cpu(mmp->mmp_magic) != EXT4_MMP_MAGIC)
++ if (le32_to_cpu(mmp->mmp_magic) != EXT4_MMP_MAGIC) {
++ brelse(*bh);
+ if (retval) {
+ ext4_error(sb, "error reading MMP data: %d",
+ retval);
+ if (retval) {
+ ext4_error(sb, "error reading MMP data: %d",
+ retval);
+ EXT4_SB(sb)->s_mmp_tsk = NULL;
+ goto failed;
+ }
+ EXT4_SB(sb)->s_mmp_tsk = NULL;
+ goto failed;
+ }
+ "The filesystem seems to have been"
+ " multiply mounted.");
+ ext4_error(sb, "abort");
+ "The filesystem seems to have been"
+ " multiply mounted.");
+ ext4_error(sb, "abort");
+ goto failed;
+ }
+ put_bh(bh_check);
+ goto failed;
+ }
+ put_bh(bh_check);