forked from Minki/linux
[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: Miklos Szeredi <miklos@szeredi.hu> Cc: <viro@parcelfarce.linux.theplanet.co.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
09dd17d3e5
commit
0494f6ec5d
@ -297,15 +297,21 @@ static int proc_fd_link(struct inode *inode, struct dentry **dentry, struct vfsm
|
||||
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;
|
||||
int result = -ENOENT;
|
||||
task_lock(proc_task(inode));
|
||||
fs = proc_task(inode)->fs;
|
||||
task_lock(task);
|
||||
fs = task->fs;
|
||||
if(fs)
|
||||
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) {
|
||||
read_lock(&fs->lock);
|
||||
*mnt = mntget(fs->pwdmnt);
|
||||
@ -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)
|
||||
{
|
||||
struct fs_struct *fs;
|
||||
struct fs_struct *fs = get_fs_struct(proc_task(inode));
|
||||
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) {
|
||||
read_lock(&fs->lock);
|
||||
*mnt = mntget(fs->rootmnt);
|
||||
|
Loading…
Reference in New Issue
Block a user