This was spotted by automated code analysis. In case reading
an ACL xattr failed (only likely to happen if there is an I/O
error for example, and even then only with unstuffed xattrs,
so pretty difficult to trigger) a small amount of memory could
potentially be leaked.

This patch adds a kfree to the error path, and also removes a
test which is no longer required (gfs2_ea_get_copy always
returns either a negative error, or a length)

Signed-off-by: Steven Whitehouse <swhit...@redhat.com>

diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c
index 71d7bf8..a201a1d 100644
--- a/fs/gfs2/xattr.c
+++ b/fs/gfs2/xattr.c
@@ -549,9 +549,10 @@ int gfs2_xattr_acl_get(struct gfs2_inode *ip, const char 
*name, char **ppdata)
                goto out;
 
        error = gfs2_ea_get_copy(ip, &el, data, len);
-       if (error == 0)
-               error = len;
-       *ppdata = data;
+       if (error < 0)
+               kfree(data);
+       else
+               *ppdata = data;
 out:
        brelse(el.el_bh);
        return error;
-- 
1.7.4

Reply via email to