diff options
Diffstat (limited to 'arch/sparc64/solaris/fs.c')
-rw-r--r-- | arch/sparc64/solaris/fs.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/arch/sparc64/solaris/fs.c b/arch/sparc64/solaris/fs.c index 57e50cd8d..6c19f8577 100644 --- a/arch/sparc64/solaris/fs.c +++ b/arch/sparc64/solaris/fs.c @@ -1,4 +1,4 @@ -/* $Id: fs.c,v 1.18 2000/04/08 02:11:54 davem Exp $ +/* $Id: fs.c,v 1.19 2000/05/09 04:48:35 davem Exp $ * fs.c: fs related syscall emulation for Solaris * * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) @@ -477,17 +477,15 @@ static int report_statvfs64(struct inode *inode, u32 buf) asmlinkage int solaris_statvfs(u32 path, u32 buf) { - struct dentry * dentry; + struct nameidata nd; int error; lock_kernel(); - dentry = namei((const char *)A(path)); - error = PTR_ERR(dentry); - if (!IS_ERR(dentry)) { - struct inode * inode = dentry->d_inode; - + error = user_path_walk((const char *)A(path),&nd); + if (!error) { + struct inode * inode = nd.dentry->d_inode; error = report_statvfs(inode, buf); - dput(dentry); + path_release(&nd); } unlock_kernel(); return error; @@ -512,17 +510,15 @@ asmlinkage int solaris_fstatvfs(unsigned int fd, u32 buf) asmlinkage int solaris_statvfs64(u32 path, u32 buf) { - struct dentry * dentry; + struct nameidata nd; int error; lock_kernel(); - dentry = namei((const char *)A(path)); - error = PTR_ERR(dentry); - if (!IS_ERR(dentry)) { - struct inode * inode = dentry->d_inode; - + error = user_path_walk((const char *)A(path), &nd); + if (!error) { + struct inode * inode = nd.dentry->d_inode; error = report_statvfs64(inode, buf); - dput(dentry); + path_release(&nd); } unlock_kernel(); return error; |