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: Andrew Hendry <andrew.hendry@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: Steve French <sfrench@us.ibm.com>
setattr_copy(inode, attrs);
mark_inode_dirty(inode);
- return 0;
cifs_setattr_exit:
kfree(full_path);