xfs: Plug memory leak in xfs_attrmulti_attr_set
authorAndreas Gruenbacher <agruenba@redhat.com>
Tue, 3 Nov 2015 01:53:54 +0000 (12:53 +1100)
committerDave Chinner <david@fromorbit.com>
Tue, 3 Nov 2015 01:53:54 +0000 (12:53 +1100)
When setting attributes via XFS_IOC_ATTRMULTI_BY_HANDLE, the user-space
buffer is copied into a new kernel-space buffer via memdup_user; that
buffer then isn't freed.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_ioctl.c

index ea7d85a..e939c20 100644 (file)
@@ -482,6 +482,7 @@ xfs_attrmulti_attr_set(
        __uint32_t              flags)
 {
        unsigned char           *kbuf;
+       int                     error;
 
        if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
                return -EPERM;
@@ -492,7 +493,9 @@ xfs_attrmulti_attr_set(
        if (IS_ERR(kbuf))
                return PTR_ERR(kbuf);
 
-       return xfs_attr_set(XFS_I(inode), name, kbuf, len, flags);
+       error = xfs_attr_set(XFS_I(inode), name, kbuf, len, flags);
+       kfree(kbuf);
+       return error;
 }
 
 int