Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce44eeb6 authored by Davi Arnaut's avatar Davi Arnaut Committed by Linus Torvalds
Browse files

[PATCH] V9FS: 'names_cache' memory leak



Data allocated with "__getname()" should always be free'd with "__putname()"
because of the AUDITSYSCALL code.

Signed-off-by: default avatarDavi Arnaut <davi.arnaut@gmail.com>
Cc: <rminnich@lanl.gov>
Cc: Eric Van Hensbergen <ericvh@ericvh.myip.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent be586bab
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
	}

@@ -411,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);
}

/**
+5 −5
Original line number Diff line number Diff line
@@ -1105,7 +1105,7 @@ static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer,
		}
	}

	putname(link);
	__putname(link);
	return retval;
}

@@ -1129,7 +1129,7 @@ static void *v9fs_vfs_follow_link(struct dentry *dentry, struct nameidata *nd)
		len = v9fs_readlink(dentry, link, strlen(link));

		if (len < 0) {
			putname(link);
			__putname(link);
			link = ERR_PTR(len);
		} else
			link[len] = 0;
@@ -1152,7 +1152,7 @@ static void v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void

	dprintk(DEBUG_VFS, " %s %s\n", dentry->d_name.name, s);
	if (!IS_ERR(s))
		putname(s);
		__putname(s);
}

/**
@@ -1228,7 +1228,7 @@ v9fs_vfs_link(struct dentry *old_dentry, struct inode *dir,
      FreeMem:
	kfree(mistat);
	kfree(fcall);
	putname(symname);
	__putname(symname);
	return retval;
}

@@ -1319,7 +1319,7 @@ v9fs_vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
      FreeMem:
	kfree(mistat);
	kfree(fcall);
	putname(symname);
	__putname(symname);

	return retval;
}