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

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

Advertisement

Kernel v2.5.75 /fs/open.c

Filename:/fs/open.c
Lines Added:9
Lines Deleted:12
Also changed in: (Previous) 2.5.74-bk7  2.5.74-bk6  2.5.74-bk5  2.5.74-bk4  2.5.74-bk3  2.5.74-bk2 
(Following) 2.5.75-bk1  2.5.75-bk2  2.5.75-bk3 

Location
[  2.5.75
  [  fs
     o  open.c

Patch

diff -Nru a/fs/open.c b/fs/open.c
--- a/fs/open.c   Thu Jul 10 13:16:26 2003
+++ b/fs/open.c   Thu Jul 10 13:16:26 2003
@@ -219,7 +219,7 @@
    if (!S_ISREG(inode->i_mode))
       goto dput_and_out;
 
-   error = permission(inode,MAY_WRITE);
+   error = permission(inode,MAY_WRITE,&nd);
    if (error)
       goto dput_and_out;
 
@@ -365,7 +365,7 @@
       newattrs.ia_valid |= ATTR_ATIME_SET | ATTR_MTIME_SET;
    } else {
       if (current->fsuid != inode->i_uid &&
-          (error = permission(inode,MAY_WRITE)) != 0)
+          (error = permission(inode,MAY_WRITE,&nd)) != 0)
          goto dput_and_out;
    }
    down(&inode->i_sem);
@@ -410,7 +410,7 @@
       newattrs.ia_valid |= ATTR_ATIME_SET | ATTR_MTIME_SET;
    } else {
       if (current->fsuid != inode->i_uid &&
-          (error = permission(inode,MAY_WRITE)) != 0)
+          (error = permission(inode,MAY_WRITE,&nd)) != 0)
          goto dput_and_out;
    }
    down(&inode->i_sem);
@@ -467,9 +467,9 @@
    else
       current->cap_effective = current->cap_permitted;
 
-   res = user_path_walk(filename, &nd);
+   res = __user_walk(filename, LOOKUP_FOLLOW|LOOKUP_ACCESS, &nd);
    if (!res) {
-      res = permission(nd.dentry->d_inode, mode);
+      res = permission(nd.dentry->d_inode, mode, &nd);
       /* SuS v2 requires we report a read only fs too */
       if(!res && (mode & S_IWOTH) && IS_RDONLY(nd.dentry->d_inode)
          && !special_file(nd.dentry->d_inode->i_mode))
@@ -493,7 +493,7 @@
    if (error)
       goto out;
 
-   error = permission(nd.dentry->d_inode,MAY_EXEC);
+   error = permission(nd.dentry->d_inode,MAY_EXEC,&nd);
    if (error)
       goto dput_and_out;
 
@@ -526,7 +526,7 @@
    if (!S_ISDIR(inode->i_mode))
       goto out_putf;
 
-   error = permission(inode, MAY_EXEC);
+   error = permission(inode, MAY_EXEC, NULL);
    if (!error)
       set_fs_pwd(current->fs, mnt, dentry);
 out_putf:
@@ -544,7 +544,7 @@
    if (error)
       goto out;
 
-   error = permission(nd.dentry->d_inode,MAY_EXEC);
+   error = permission(nd.dentry->d_inode,MAY_EXEC,&nd);
    if (error)
       goto dput_and_out;
 
@@ -952,11 +952,8 @@
       return 0;
    }
    retval = 0;
-   if (filp->f_op && filp->f_op->flush) {
-      lock_kernel();
+   if (filp->f_op && filp->f_op->flush)
       retval = filp->f_op->flush(filp);
-      unlock_kernel();
-   }
    dnotify_flush(filp, id);
    locks_remove_posix(filp, id);
    fput(filp);


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