GFS2: Fix very unlikley memory leak in ACL xattr code
Steven Whitehouse [Wed, 9 Nov 2011 12:54:43 +0000 (12:54 +0000)]
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 <swhiteho@redhat.com>

fs/gfs2/xattr.c

index 71d7bf8..a201a1d 100644 (file)
@@ -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;