tcp: do_tcp_sendpages() must try to push data out on oom conditions
[linux-flexiantxendom0-3.2.10.git] / fs / utimes.c
index dc28b78..ba653f3 100644 (file)
@@ -24,7 +24,7 @@
  * must be owner or have write permission.
  * Else, update from *times, must be owner or super user.
  */
-asmlinkage long sys_utime(char __user *filename, struct utimbuf __user *times)
+SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times)
 {
        struct timespec tv[2];
 
@@ -95,7 +95,7 @@ static int utimes_common(struct path *path, struct timespec *times)
                 if (IS_IMMUTABLE(inode))
                        goto mnt_drop_write_and_out;
 
-               if (!is_owner_or_cap(inode)) {
+               if (!inode_owner_or_capable(inode)) {
                        error = inode_permission(inode, MAY_WRITE);
                        if (error)
                                goto mnt_drop_write_and_out;
@@ -126,7 +126,8 @@ out:
  * must be owner or have write permission.
  * Else, update from *times, must be owner or super user.
  */
-long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags)
+long do_utimes(int dfd, const char __user *filename, struct timespec *times,
+              int flags)
 {
        int error = -EINVAL;
 
@@ -152,25 +153,26 @@ long do_utimes(int dfd, char __user *filename, struct timespec *times, int flags
                error = utimes_common(&file->f_path, times);
                fput(file);
        } else {
-               struct nameidata nd;
+               struct path path;
                int lookup_flags = 0;
 
                if (!(flags & AT_SYMLINK_NOFOLLOW))
                        lookup_flags |= LOOKUP_FOLLOW;
 
-               error = __user_walk_fd(dfd, filename, lookup_flags, &nd);
+               error = user_path_at(dfd, filename, lookup_flags, &path);
                if (error)
                        goto out;
 
-               error = utimes_common(&nd.path, times);
-               path_put(&nd.path);
+               error = utimes_common(&path, times);
+               path_put(&path);
        }
 
 out:
        return error;
 }
 
-asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __user *utimes, int flags)
+SYSCALL_DEFINE4(utimensat, int, dfd, const char __user *, filename,
+               struct timespec __user *, utimes, int, flags)
 {
        struct timespec tstimes[2];
 
@@ -187,7 +189,8 @@ asmlinkage long sys_utimensat(int dfd, char __user *filename, struct timespec __
        return do_utimes(dfd, filename, utimes ? tstimes : NULL, flags);
 }
 
-asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __user *utimes)
+SYSCALL_DEFINE3(futimesat, int, dfd, const char __user *, filename,
+               struct timeval __user *, utimes)
 {
        struct timeval times[2];
        struct timespec tstimes[2];
@@ -214,7 +217,8 @@ asmlinkage long sys_futimesat(int dfd, char __user *filename, struct timeval __u
        return do_utimes(dfd, filename, utimes ? tstimes : NULL, 0);
 }
 
-asmlinkage long sys_utimes(char __user *filename, struct timeval __user *utimes)
+SYSCALL_DEFINE2(utimes, char __user *, filename,
+               struct timeval __user *, utimes)
 {
        return sys_futimesat(AT_FDCWD, filename, utimes);
 }