diff options
author | Jan Blunck <jblunck@suse.de> | 2008-02-14 22:34:35 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-15 00:13:33 -0500 |
commit | 1d957f9bf87da74f420424d16ece005202bbebd3 (patch) | |
tree | 363d4770c0c74a536524c99ccd2762ce96ee9bbe /arch | |
parent | 4ac9137858e08a19f29feac4e1f4df7c268b0ba5 (diff) |
Introduce path_put()
* Add path_put() functions for releasing a reference to the dentry and
vfsmount of a struct path in the right order
* Switch from path_release(nd) to path_put(&nd->path)
* Rename dput_path() to path_put_conditional()
[akpm@linux-foundation.org: fix cifs]
Signed-off-by: Jan Blunck <jblunck@suse.de>
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Acked-by: Christoph Hellwig <hch@lst.de>
Cc: <linux-fsdevel@vger.kernel.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Steven French <sfrench@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/kernel/osf_sys.c | 2 | ||||
-rw-r--r-- | arch/mips/kernel/sysirix.c | 6 | ||||
-rw-r--r-- | arch/parisc/hpux/sys_hpux.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/syscalls.c | 2 | ||||
-rw-r--r-- | arch/sparc64/solaris/fs.c | 4 |
5 files changed, 8 insertions, 8 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index f2bef5e14faa..8c71daf94a59 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
@@ -260,7 +260,7 @@ osf_statfs(char __user *path, struct osf_statfs __user *buffer, unsigned long bu | |||
260 | retval = user_path_walk(path, &nd); | 260 | retval = user_path_walk(path, &nd); |
261 | if (!retval) { | 261 | if (!retval) { |
262 | retval = do_osf_statfs(nd.path.dentry, buffer, bufsiz); | 262 | retval = do_osf_statfs(nd.path.dentry, buffer, bufsiz); |
263 | path_release(&nd); | 263 | path_put(&nd.path); |
264 | } | 264 | } |
265 | return retval; | 265 | return retval; |
266 | } | 266 | } |
diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c index 49d6292ffa05..672fba84b2cc 100644 --- a/arch/mips/kernel/sysirix.c +++ b/arch/mips/kernel/sysirix.c | |||
@@ -711,7 +711,7 @@ asmlinkage int irix_statfs(const char __user *path, | |||
711 | } | 711 | } |
712 | 712 | ||
713 | dput_and_out: | 713 | dput_and_out: |
714 | path_release(&nd); | 714 | path_put(&nd.path); |
715 | out: | 715 | out: |
716 | return error; | 716 | return error; |
717 | } | 717 | } |
@@ -1385,7 +1385,7 @@ asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf) | |||
1385 | error |= __put_user(0, &buf->f_fstr[i]); | 1385 | error |= __put_user(0, &buf->f_fstr[i]); |
1386 | 1386 | ||
1387 | dput_and_out: | 1387 | dput_and_out: |
1388 | path_release(&nd); | 1388 | path_put(&nd.path); |
1389 | out: | 1389 | out: |
1390 | return error; | 1390 | return error; |
1391 | } | 1391 | } |
@@ -1636,7 +1636,7 @@ asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user * | |||
1636 | error |= __put_user(0, &buf->f_fstr[i]); | 1636 | error |= __put_user(0, &buf->f_fstr[i]); |
1637 | 1637 | ||
1638 | dput_and_out: | 1638 | dput_and_out: |
1639 | path_release(&nd); | 1639 | path_put(&nd.path); |
1640 | out: | 1640 | out: |
1641 | return error; | 1641 | return error; |
1642 | } | 1642 | } |
diff --git a/arch/parisc/hpux/sys_hpux.c b/arch/parisc/hpux/sys_hpux.c index d7395af3e846..0c5b9dabb475 100644 --- a/arch/parisc/hpux/sys_hpux.c +++ b/arch/parisc/hpux/sys_hpux.c | |||
@@ -222,7 +222,7 @@ asmlinkage long hpux_statfs(const char __user *path, | |||
222 | error = vfs_statfs_hpux(nd.path.dentry, &tmp); | 222 | error = vfs_statfs_hpux(nd.path.dentry, &tmp); |
223 | if (!error && copy_to_user(buf, &tmp, sizeof(tmp))) | 223 | if (!error && copy_to_user(buf, &tmp, sizeof(tmp))) |
224 | error = -EFAULT; | 224 | error = -EFAULT; |
225 | path_release(&nd); | 225 | path_put(&nd.path); |
226 | } | 226 | } |
227 | return error; | 227 | return error; |
228 | } | 228 | } |
diff --git a/arch/powerpc/platforms/cell/spufs/syscalls.c b/arch/powerpc/platforms/cell/spufs/syscalls.c index 430404413178..49c87769b1f8 100644 --- a/arch/powerpc/platforms/cell/spufs/syscalls.c +++ b/arch/powerpc/platforms/cell/spufs/syscalls.c | |||
@@ -73,7 +73,7 @@ static long do_spu_create(const char __user *pathname, unsigned int flags, | |||
73 | LOOKUP_OPEN|LOOKUP_CREATE, &nd); | 73 | LOOKUP_OPEN|LOOKUP_CREATE, &nd); |
74 | if (!ret) { | 74 | if (!ret) { |
75 | ret = spufs_create(&nd, flags, mode, neighbor); | 75 | ret = spufs_create(&nd, flags, mode, neighbor); |
76 | path_release(&nd); | 76 | path_put(&nd.path); |
77 | } | 77 | } |
78 | putname(tmp); | 78 | putname(tmp); |
79 | } | 79 | } |
diff --git a/arch/sparc64/solaris/fs.c b/arch/sparc64/solaris/fs.c index 516932e9f70b..7d035f0d3ae1 100644 --- a/arch/sparc64/solaris/fs.c +++ b/arch/sparc64/solaris/fs.c | |||
@@ -436,7 +436,7 @@ asmlinkage int solaris_statvfs(u32 path, u32 buf) | |||
436 | if (!error) { | 436 | if (!error) { |
437 | struct inode *inode = nd.path.dentry->d_inode; | 437 | struct inode *inode = nd.path.dentry->d_inode; |
438 | error = report_statvfs(nd.path.mnt, inode, buf); | 438 | error = report_statvfs(nd.path.mnt, inode, buf); |
439 | path_release(&nd); | 439 | path_put(&nd.path); |
440 | } | 440 | } |
441 | return error; | 441 | return error; |
442 | } | 442 | } |
@@ -466,7 +466,7 @@ asmlinkage int solaris_statvfs64(u32 path, u32 buf) | |||
466 | if (!error) { | 466 | if (!error) { |
467 | struct inode *inode = nd.path.dentry->d_inode; | 467 | struct inode *inode = nd.path.dentry->d_inode; |
468 | error = report_statvfs64(nd.path.mnt, inode, buf); | 468 | error = report_statvfs64(nd.path.mnt, inode, buf); |
469 | path_release(&nd); | 469 | path_put(&nd.path); |
470 | } | 470 | } |
471 | unlock_kernel(); | 471 | unlock_kernel(); |
472 | return error; | 472 | return error; |