ocfs2: less function calls in ocfs2_convert_inline_data_to_extents() after error...
authorMarkus Elfring <elfring@users.sourceforge.net>
Tue, 14 Apr 2015 22:42:45 +0000 (15:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Apr 2015 23:48:56 +0000 (16:48 -0700)
kfree() was called in a few cases by ocfs2_convert_inline_data_to_extents()
during error handling even if the passed variable "pages" contained a
null pointer.

* Return from this implementation directly after failure detection for
  the function call "kcalloc".

* Corresponding details could be improved by the introduction of another
  jump label.

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 fdab27c9be999e387b984f18d732fa1b72202d0d..bf806e58b1cb19f73560e71f437272a7fc8f1a6f 100644 (file)
@@ -6853,13 +6853,13 @@ int ocfs2_convert_inline_data_to_extents(struct inode *inode,
                if (pages == NULL) {
                        ret = -ENOMEM;
                        mlog_errno(ret);
-                       goto out;
+                       return ret;
                }
 
                ret = ocfs2_reserve_clusters(osb, 1, &data_ac);
                if (ret) {
                        mlog_errno(ret);
-                       goto out;
+                       goto free_pages;
                }
        }
 
@@ -6991,6 +6991,7 @@ out_commit:
 out:
        if (data_ac)
                ocfs2_free_alloc_context(data_ac);
+free_pages:
        kfree(pages);
        return ret;
 }