[PATCH] smbfs: 'names_cache' memory leak
authorDavi Arnaut <davi.arnaut@gmail.com>
Mon, 7 Nov 2005 08:59:37 +0000 (00:59 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 7 Nov 2005 15:53:39 +0000 (07:53 -0800)
Data allocated with "__getname()" should always be free'd with "__putname()"
because of the AUDITSYSCALL code.

Signed-off-by: Davi Arnaut <davi.arnaut@gmail.com>
Cc: Urban Widmark <urban@teststation.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/smbfs/symlink.c

index 0c64bc3a0127e9c15c6f76921ea688f7eee73b6f..cdc53c4fb3813448ef6c7c0dba700b7ad38c4752 100644 (file)
@@ -45,7 +45,7 @@ static void *smb_follow_link(struct dentry *dentry, struct nameidata *nd)
                int len = smb_proc_read_link(server_from_dentry(dentry),
                                                dentry, link, PATH_MAX - 1);
                if (len < 0) {
                int len = smb_proc_read_link(server_from_dentry(dentry),
                                                dentry, link, PATH_MAX - 1);
                if (len < 0) {
-                       putname(link);
+                       __putname(link);
                        link = ERR_PTR(len);
                } else {
                        link[len] = 0;
                        link = ERR_PTR(len);
                } else {
                        link[len] = 0;
@@ -59,7 +59,7 @@ static void smb_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
 {
        char *s = nd_get_link(nd);
        if (!IS_ERR(s))
 {
        char *s = nd_get_link(nd);
        if (!IS_ERR(s))
-               putname(s);
+               __putname(s);
 }
 
 struct inode_operations smb_link_inode_operations =
 }
 
 struct inode_operations smb_link_inode_operations =