[PATCH] V9FS: 'names_cache' memory leak
[safe/jmp/linux-2.6] / fs / 9p / v9fs.c
index 13bdbba..418c374 100644 (file)
@@ -266,7 +266,7 @@ v9fs_session_init(struct v9fs_session_info *v9ses,
 
        v9ses->remotename = __getname();
        if (!v9ses->remotename) {
-               putname(v9ses->name);
+               __putname(v9ses->name);
                return -ENOMEM;
        }
 
@@ -303,7 +303,13 @@ v9fs_session_init(struct v9fs_session_info *v9ses,
                goto SessCleanUp;
        };
 
-       v9ses->transport = trans_proto;
+       v9ses->transport = kmalloc(sizeof(*v9ses->transport), GFP_KERNEL);
+       if (!v9ses->transport) {
+               retval = -ENOMEM;
+               goto SessCleanUp;
+       }
+
+       memmove(v9ses->transport, trans_proto, sizeof(*v9ses->transport));
 
        if ((retval = v9ses->transport->init(v9ses, dev_name, data)) < 0) {
                eprintk(KERN_ERR, "problem initializing transport\n");
@@ -405,8 +411,8 @@ void v9fs_session_close(struct v9fs_session_info *v9ses)
        if (v9ses->transport)
                v9ses->transport->close(v9ses->transport);
 
-       putname(v9ses->name);
-       putname(v9ses->remotename);
+       __putname(v9ses->name);
+       __putname(v9ses->remotename);
 }
 
 /**