• Suresh Jayaraman's avatar
    cifs: fix a memleak in cifs_setattr_nounix() · 3565bd46
    Suresh Jayaraman authored
    Andrew Hendry reported a kmemleak warning in 2.6.37-rc1 while editing a
    text file with gedit over cifs.
    
    unreferenced object 0xffff88022ee08b40 (size 32):
      comm "gedit", pid 2524, jiffies 4300160388 (age 2633.655s)
      hex dump (first 32 bytes):
        5c 2e 67 6f 75 74 70 75 74 73 74 72 65 61 6d 2d  \.goutputstream-
        35 42 41 53 4c 56 00 de 09 00 00 00 2c 26 78 ee  5BASLV......,&x.
      backtrace:
        [<ffffffff81504a4d>] kmemleak_alloc+0x2d/0x60
        [<ffffffff81136e13>] __kmalloc+0xe3/0x1d0
        [<ffffffffa0313db0>] build_path_from_dentry+0xf0/0x230 [cifs]
        [<ffffffffa031ae1e>] cifs_setattr+0x9e/0x770 [cifs]
        [<ffffffff8115fe90>] notify_change+0x170/0x2e0
        [<ffffffff81145ceb>] sys_fchmod+0x10b/0x140
        [<ffffffff8100c172>] system_call_fastpath+0x16/0x1b
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    The commit 1025774c that removed inode_setattr() seems to have introduced this
    memleak by returning early without freeing 'full_path'.
    Reported-by: default avatarAndrew Hendry <andrew.hendry@gmail.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarJeff Layton <jlayton@redhat.com>
    Signed-off-by: default avatarSuresh Jayaraman <sjayaraman@suse.de>
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    3565bd46
inode.c 58.1 KB