Commit 06a269cc authored by Markus Elfring's avatar Markus Elfring Committed by Linus Torvalds

ocfs2: less function calls in ocfs2_figure_merge_contig_type() after error detection

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: default avatarMarkus Elfring <elfring@users.sourceforge.net>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3cc79b79
...@@ -4332,17 +4332,17 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, ...@@ -4332,17 +4332,17 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
} else if (path->p_tree_depth > 0) { } else if (path->p_tree_depth > 0) {
status = ocfs2_find_cpos_for_left_leaf(sb, path, &left_cpos); status = ocfs2_find_cpos_for_left_leaf(sb, path, &left_cpos);
if (status) if (status)
goto out; goto exit;
if (left_cpos != 0) { if (left_cpos != 0) {
left_path = ocfs2_new_path_from_path(path); left_path = ocfs2_new_path_from_path(path);
if (!left_path) if (!left_path)
goto out; goto exit;
status = ocfs2_find_path(et->et_ci, left_path, status = ocfs2_find_path(et->et_ci, left_path,
left_cpos); left_cpos);
if (status) if (status)
goto out; goto free_left_path;
new_el = path_leaf_el(left_path); new_el = path_leaf_el(left_path);
...@@ -4359,7 +4359,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, ...@@ -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_next_free_rec),
le16_to_cpu(new_el->l_count)); le16_to_cpu(new_el->l_count));
status = -EINVAL; status = -EINVAL;
goto out; goto free_left_path;
} }
rec = &new_el->l_recs[ rec = &new_el->l_recs[
le16_to_cpu(new_el->l_next_free_rec) - 1]; le16_to_cpu(new_el->l_next_free_rec) - 1];
...@@ -4386,18 +4386,18 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, ...@@ -4386,18 +4386,18 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
path->p_tree_depth > 0) { path->p_tree_depth > 0) {
status = ocfs2_find_cpos_for_right_leaf(sb, path, &right_cpos); status = ocfs2_find_cpos_for_right_leaf(sb, path, &right_cpos);
if (status) if (status)
goto out; goto free_left_path;
if (right_cpos == 0) if (right_cpos == 0)
goto out; goto free_left_path;
right_path = ocfs2_new_path_from_path(path); right_path = ocfs2_new_path_from_path(path);
if (!right_path) if (!right_path)
goto out; goto free_left_path;
status = ocfs2_find_path(et->et_ci, right_path, right_cpos); status = ocfs2_find_path(et->et_ci, right_path, right_cpos);
if (status) if (status)
goto out; goto free_right_path;
new_el = path_leaf_el(right_path); new_el = path_leaf_el(right_path);
rec = &new_el->l_recs[0]; rec = &new_el->l_recs[0];
...@@ -4411,7 +4411,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, ...@@ -4411,7 +4411,7 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
(unsigned long long)le64_to_cpu(eb->h_blkno), (unsigned long long)le64_to_cpu(eb->h_blkno),
le16_to_cpu(new_el->l_next_free_rec)); le16_to_cpu(new_el->l_next_free_rec));
status = -EINVAL; status = -EINVAL;
goto out; goto free_right_path;
} }
rec = &new_el->l_recs[1]; rec = &new_el->l_recs[1];
} }
...@@ -4428,9 +4428,11 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et, ...@@ -4428,9 +4428,11 @@ ocfs2_figure_merge_contig_type(struct ocfs2_extent_tree *et,
ret = contig_type; ret = contig_type;
} }
out: free_right_path:
ocfs2_free_path(left_path);
ocfs2_free_path(right_path); ocfs2_free_path(right_path);
free_left_path:
ocfs2_free_path(left_path);
exit:
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment