Re: [PATCH] cifs: possible memory leak in xattr.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 2, 2012 at 12:17 AM, santosh nayak
<santoshprasadnayak@xxxxxxxxx> wrote:
> From: Santosh Nayak <santoshprasadnayak@xxxxxxxxx>
>
> Memory is allocated irrespective of whether CIFS_ACL is configured
> or not. But free is happenning only if CIFS_ACL is set. This is a
> possible memory leak scenario.
>
> Fix is:
> Allocate and free memory only if CIFS_ACL is configured.
>
> Signed-off-by: Santosh Nayak <santoshprasadnayak@xxxxxxxxx>
> ---
>  fs/cifs/xattr.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c
> index 45f07c4..10d92cf 100644
> --- a/fs/cifs/xattr.c
> +++ b/fs/cifs/xattr.c
> @@ -105,7 +105,6 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,
>        struct cifs_tcon *pTcon;
>        struct super_block *sb;
>        char *full_path;
> -       struct cifs_ntsd *pacl;
>
>        if (direntry == NULL)
>                return -EIO;
> @@ -164,23 +163,24 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,
>                        cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
>        } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL,
>                        strlen(CIFS_XATTR_CIFS_ACL)) == 0) {
> +#ifdef CONFIG_CIFS_ACL
> +               struct cifs_ntsd *pacl;
>                pacl = kmalloc(value_size, GFP_KERNEL);
>                if (!pacl) {
>                        cFYI(1, "%s: Can't allocate memory for ACL",
>                                        __func__);
>                        rc = -ENOMEM;
>                } else {
> -#ifdef CONFIG_CIFS_ACL
>                        memcpy(pacl, ea_value, value_size);
>                        rc = set_cifs_acl(pacl, value_size,
>                                direntry->d_inode, full_path, CIFS_ACL_DACL);
>                        if (rc == 0) /* force revalidate of the inode */
>                                CIFS_I(direntry->d_inode)->time = 0;
>                        kfree(pacl);
> +               }
>  #else
>                        cFYI(1, "Set CIFS ACL not supported yet");
>  #endif /* CONFIG_CIFS_ACL */
> -               }
>        } else {
>                int temp;
>                temp = strncmp(ea_name, POSIX_ACL_XATTR_ACCESS,
> --
> 1.7.4.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Looks correct.

Reviewed-by: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux