Commit 0494f6ec authored by Miklos Szeredi's avatar Miklos Szeredi Committed by Linus Torvalds

[PATCH] use get_fs_struct() in proc

This patch cleans up proc_cwd_link() and proc_root_link() by factoring
out common code into get_fs_struct().
Signed-off-by: default avatarMiklos Szeredi <miklos@szeredi.hu>
Cc: <viro@parcelfarce.linux.theplanet.co.uk>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 09dd17d3
...@@ -297,15 +297,21 @@ static int proc_fd_link(struct inode *inode, struct dentry **dentry, struct vfsm ...@@ -297,15 +297,21 @@ static int proc_fd_link(struct inode *inode, struct dentry **dentry, struct vfsm
return -ENOENT; return -ENOENT;
} }
static int proc_cwd_link(struct inode *inode, struct dentry **dentry, struct vfsmount **mnt) static struct fs_struct *get_fs_struct(struct task_struct *task)
{ {
struct fs_struct *fs; struct fs_struct *fs;
int result = -ENOENT; task_lock(task);
task_lock(proc_task(inode)); fs = task->fs;
fs = proc_task(inode)->fs;
if(fs) if(fs)
atomic_inc(&fs->count); atomic_inc(&fs->count);
task_unlock(proc_task(inode)); task_unlock(task);
return fs;
}
static int proc_cwd_link(struct inode *inode, struct dentry **dentry, struct vfsmount **mnt)
{
struct fs_struct *fs = get_fs_struct(proc_task(inode));
int result = -ENOENT;
if (fs) { if (fs) {
read_lock(&fs->lock); read_lock(&fs->lock);
*mnt = mntget(fs->pwdmnt); *mnt = mntget(fs->pwdmnt);
...@@ -319,13 +325,8 @@ static int proc_cwd_link(struct inode *inode, struct dentry **dentry, struct vfs ...@@ -319,13 +325,8 @@ static int proc_cwd_link(struct inode *inode, struct dentry **dentry, struct vfs
static int proc_root_link(struct inode *inode, struct dentry **dentry, struct vfsmount **mnt) static int proc_root_link(struct inode *inode, struct dentry **dentry, struct vfsmount **mnt)
{ {
struct fs_struct *fs; struct fs_struct *fs = get_fs_struct(proc_task(inode));
int result = -ENOENT; int result = -ENOENT;
task_lock(proc_task(inode));
fs = proc_task(inode)->fs;
if(fs)
atomic_inc(&fs->count);
task_unlock(proc_task(inode));
if (fs) { if (fs) {
read_lock(&fs->lock); read_lock(&fs->lock);
*mnt = mntget(fs->rootmnt); *mnt = mntget(fs->rootmnt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment