summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2012-05-18 14:32:36 +0300
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2012-05-20 20:19:01 +0300
commit499429760650018216eb8d0b35067cf2c5c4520b (patch)
treeb5f717005065ae0e28fd6d3f586a12c18de6daad
parenta6aae4dd0ffad299a33d122f8a339b399bee5381 (diff)
downloadop-kernel-dev-499429760650018216eb8d0b35067cf2c5c4520b.zip
op-kernel-dev-499429760650018216eb8d0b35067cf2c5c4520b.tar.gz
UBIFS: make ubifs_lpt_init clean-up in case of failure
Most functions in UBIFS follow the following designn pattern: if the function allocates multiple resources, and failss at some point, it frees what it has allocated and returns an error. So the caller can rely on the fact that the callee has cleaned up everything after own failure. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Acked-by: Sidney Amani <seed95@gmail.com>
-rw-r--r--fs/ubifs/lpt.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/ubifs/lpt.c b/fs/ubifs/lpt.c
index 2054e81..b4280c4 100644
--- a/fs/ubifs/lpt.c
+++ b/fs/ubifs/lpt.c
@@ -1740,16 +1740,20 @@ int ubifs_lpt_init(struct ubifs_info *c, int rd, int wr)
if (rd) {
err = lpt_init_rd(c);
if (err)
- return err;
+ goto out_err;
}
if (wr) {
err = lpt_init_wr(c);
if (err)
- return err;
+ goto out_err;
}
return 0;
+
+out_err:
+ ubifs_lpt_free(c, 0);
+ return err;
}
/**
OpenPOWER on IntegriCloud