ocfs2: less function calls in ocfs2_figure_merge_contig_type() after error detection
authorMarkus Elfring <elfring@users.sourceforge.net>
Tue, 14 Apr 2015 22:42:48 +0000 (15:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Apr 2015 23:48:57 +0000 (16:48 -0700)
ocfs2_free_path() was called in some cases by
ocfs2_figure_merge_contig_type() during error handling even if the passed
variables "left_path" and "right_path" contained still a null pointer.

Corresponding implementation details could be improved by adjustments for
jump labels according to the current Linux coding style convention.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ocfs2/alloc.c

index bf806e58b1cb19f73560e71f437272a7fc8f1a6f..370b4ea4c23a3eab66d8399992c2e5cf80ecf0be 100644 (file)
@@ -4332,17 +4332,17 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
        } else if (path->p_tree_depth > 0) {
                status = ocfs2_find_cpos_for_left_leaf(sb, path, &left_cpos);
                if (status)
-                       goto out;
+                       goto exit;
 
                if (left_cpos != 0) {
                        left_path = ocfs2_new_path_from_path(path);
                        if (!left_path)
-                               goto out;
+                               goto exit;
 
                        status = ocfs2_find_path(et->et_ci, left_path,
                                                 left_cpos);
                        if (status)
-                               goto out;
+                               goto free_left_path;
 
                        new_el = path_leaf_el(left_path);
 
@@ -4359,7 +4359,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
                                            le16_to_cpu(new_el->l_next_free_rec),
                                            le16_to_cpu(new_el->l_count));
                                status = -EINVAL;
-                               goto out;
+                               goto free_left_path;
                        }
                        rec = &new_el->l_recs[
                                le16_to_cpu(new_el->l_next_free_rec) - 1];
@@ -4386,18 +4386,18 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
                 path->p_tree_depth > 0) {
                status = ocfs2_find_cpos_for_right_leaf(sb, path, &right_cpos);
                if (status)
-                       goto out;
+                       goto free_left_path;
 
                if (right_cpos == 0)
-                       goto out;
+                       goto free_left_path;
 
                right_path = ocfs2_new_path_from_path(path);
                if (!right_path)
-                       goto out;
+                       goto free_left_path;
 
                status = ocfs2_find_path(et->et_ci, right_path, right_cpos);
                if (status)
-                       goto out;
+                       goto free_right_path;
 
                new_el = path_leaf_el(right_path);
                rec = &new_el->l_recs[0];
@@ -4411,7 +4411,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
                                            (unsigned long long)le64_to_cpu(eb->h_blkno),
                                            le16_to_cpu(new_el->l_next_free_rec));
                                status = -EINVAL;
-                               goto out;
+                               goto free_right_path;
                        }
                        rec = &new_el->l_recs[1];
                }
@@ -4428,9 +4428,11 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
                        ret = contig_type;
        }
 
-out:
-       ocfs2_free_path(left_path);
+free_right_path:
        ocfs2_free_path(right_path);
+free_left_path:
+       ocfs2_free_path(left_path);
+exit:
        return ret;
 }