Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Kernel v2.6.25-rc1-git4 /fs/open.c

Filename:/fs/open.c
Lines Added:29
Lines Deleted:32
Also changed in: (Previous) 2.6.25-rc1  2.6.24-git22  2.6.24-git21  2.6.24-git20  2.6.24-git19  2.6.24 
(Following) 2.6.25-rc2  2.6.25-rc3  2.6.25-rc4  2.6.25-rc5  2.6.25-rc6  2.6.25-rc7 

Location
[  2.6.25-rc1-git4
  [  fs
     o  open.c

Patch

diff --git a/fs/open.c b/fs/open.c
index 43fcd60..5419853 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -127,10 +127,10 @@ asmlinkage long sys_statfs(const char __user * path, struct statfs __user * buf)
    error = user_path_walk(path, &nd);
    if (!error) {
       struct statfs tmp;
-      error = vfs_statfs_native(nd.dentry, &tmp);
+      error = vfs_statfs_native(nd.path.dentry, &tmp);
       if (!error && copy_to_user(buf, &tmp, sizeof(tmp)))
          error = -EFAULT;
-      path_release(&nd);
+      path_put(&nd.path);
    }
    return error;
 }
@@ -146,10 +146,10 @@ asmlinkage long sys_statfs64(const char __user *path, size_t sz, struct statfs64
    error = user_path_walk(path, &nd);
    if (!error) {
       struct statfs64 tmp;
-      error = vfs_statfs64(nd.dentry, &tmp);
+      error = vfs_statfs64(nd.path.dentry, &tmp);
       if (!error && copy_to_user(buf, &tmp, sizeof(tmp)))
          error = -EFAULT;
-      path_release(&nd);
+      path_put(&nd.path);
    }
    return error;
 }
@@ -233,7 +233,7 @@ static long do_sys_truncate(const char __user * path, loff_t length)
    error = user_path_walk(path, &nd);
    if (error)
       goto out;
-   inode = nd.dentry->d_inode;
+   inode = nd.path.dentry->d_inode;
 
    /* For directories it's -EISDIR, for other non-regulars - -EINVAL */
    error = -EISDIR;
@@ -271,13 +271,13 @@ static long do_sys_truncate(const char __user * path, loff_t length)
    error = locks_verify_truncate(inode, NULL, length);
    if (!error) {
       DQUOT_INIT(inode);
-      error = do_truncate(nd.dentry, length, 0, NULL);
+      error = do_truncate(nd.path.dentry, length, 0, NULL);
    }
 
 put_write_and_out:
    put_write_access(inode);
 dput_and_out:
-   path_release(&nd);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -455,14 +455,14 @@ asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode)
    res = vfs_permission(&nd, mode);
    /* SuS v2 requires we report a read only fs too */
    if(res || !(mode & S_IWOTH) ||
-      special_file(nd.dentry->d_inode->i_mode))
+      special_file(nd.path.dentry->d_inode->i_mode))
       goto out_path_release;
 
-   if(IS_RDONLY(nd.dentry->d_inode))
+   if(IS_RDONLY(nd.path.dentry->d_inode))
       res = -EROFS;
 
 out_path_release:
-   path_release(&nd);
+   path_put(&nd.path);
 out:
    current->fsuid = old_fsuid;
    current->fsgid = old_fsgid;
@@ -490,10 +490,10 @@ asmlinkage long sys_chdir(const char __user * filename)
    if (error)
       goto dput_and_out;
 
-   set_fs_pwd(current->fs, nd.mnt, nd.dentry);
+   set_fs_pwd(current->fs, &nd.path);
 
 dput_and_out:
-   path_release(&nd);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -501,9 +501,7 @@ out:
 asmlinkage long sys_fchdir(unsigned int fd)
 {
    struct file *file;
-   struct dentry *dentry;
    struct inode *inode;
-   struct vfsmount *mnt;
    int error;
 
    error = -EBADF;
@@ -511,9 +509,7 @@ asmlinkage long sys_fchdir(unsigned int fd)
    if (!file)
       goto out;
 
-   dentry = file->f_path.dentry;
-   mnt = file->f_path.mnt;
-   inode = dentry->d_inode;
+   inode = file->f_path.dentry->d_inode;
 
    error = -ENOTDIR;
    if (!S_ISDIR(inode->i_mode))
@@ -521,7 +517,7 @@ asmlinkage long sys_fchdir(unsigned int fd)
 
    error = file_permission(file, MAY_EXEC);
    if (!error)
-      set_fs_pwd(current->fs, mnt, dentry);
+      set_fs_pwd(current->fs, &file->f_path);
 out_putf:
    fput(file);
 out:
@@ -545,11 +541,11 @@ asmlinkage long sys_chroot(const char __user * filename)
    if (!capable(CAP_SYS_CHROOT))
       goto dput_and_out;
 
-   set_fs_root(current->fs, nd.mnt, nd.dentry);
+   set_fs_root(current->fs, &nd.path);
    set_fs_altroot();
    error = 0;
 dput_and_out:
-   path_release(&nd);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -602,7 +598,7 @@ asmlinkage long sys_fchmodat(int dfd, const char __user *filename,
    error = __user_walk_fd(dfd, filename, LOOKUP_FOLLOW, &nd);
    if (error)
       goto out;
-   inode = nd.dentry->d_inode;
+   inode = nd.path.dentry->d_inode;
 
    error = -EROFS;
    if (IS_RDONLY(inode))
@@ -617,11 +613,11 @@ asmlinkage long sys_fchmodat(int dfd, const char __user *filename,
       mode = inode->i_mode;
    newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
    newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
-   error = notify_change(nd.dentry, &newattrs);
+   error = notify_change(nd.path.dentry, &newattrs);
    mutex_unlock(&inode->i_mutex);
 
 dput_and_out:
-   path_release(&nd);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -675,8 +671,8 @@ asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group)
    error = user_path_walk(filename, &nd);
    if (error)
       goto out;
-   error = chown_common(nd.dentry, user, group);
-   path_release(&nd);
+   error = chown_common(nd.path.dentry, user, group);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -695,8 +691,8 @@ asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user,
    error = __user_walk_fd(dfd, filename, follow, &nd);
    if (error)
       goto out;
-   error = chown_common(nd.dentry, user, group);
-   path_release(&nd);
+   error = chown_common(nd.path.dentry, user, group);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -709,8 +705,8 @@ asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group
    error = user_path_walk_link(filename, &nd);
    if (error)
       goto out;
-   error = chown_common(nd.dentry, user, group);
-   path_release(&nd);
+   error = chown_common(nd.path.dentry, user, group);
+   path_put(&nd.path);
 out:
    return error;
 }
@@ -863,7 +859,7 @@ struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry
       goto out;
    if (IS_ERR(dentry))
       goto out_err;
-   nd->intent.open.file = __dentry_open(dget(dentry), mntget(nd->mnt),
+   nd->intent.open.file = __dentry_open(dget(dentry), mntget(nd->path.mnt),
                     nd->intent.open.flags - 1,
                     nd->intent.open.file,
                     open);
@@ -891,9 +887,10 @@ struct file *nameidata_to_filp(struct nameidata *nd, int flags)
    filp = nd->intent.open.file;
    /* Has the filesystem initialised the file for us? */
    if (filp->f_path.dentry == NULL)
-      filp = __dentry_open(nd->dentry, nd->mnt, flags, filp, NULL);
+      filp = __dentry_open(nd->path.dentry, nd->path.mnt, flags, filp,
+                 NULL);
    else
-      path_release(nd);
+      path_put(&nd->path);
    return filp;
 }
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.