UBIFS: make ubifs_lpt_init clean-up in case of failure
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Fri, 18 May 2012 11:32:36 +0000 (14:32 +0300)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Sun, 20 May 2012 17:19:01 +0000 (20:19 +0300)
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>
fs/ubifs/lpt.c

index 2054e8171fd4200ffd56aff61929fd57b2f0b9c0..b4280c44949cd8af3ea586b6975da8b4b2f41a38 100644 (file)
@@ -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;
 }
 
 /**