Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 18972
b: refs/heads/master
c: 5590ff0
h: refs/heads/master
v: v3
  • Loading branch information
Ulrich Drepper authored and Linus Torvalds committed Jan 19, 2006
1 parent 99778ad commit 55fca48
Show file tree
Hide file tree
Showing 12 changed files with 321 additions and 81 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e2f99018eb7b29954747a2dd78e9fc0c36a60f0f
refs/heads/master: 5590ff0d5528b60153c0b4e7b771472b5a95e297
2 changes: 1 addition & 1 deletion trunk/arch/alpha/kernel/osf_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -960,7 +960,7 @@ osf_utimes(char __user *filename, struct timeval32 __user *tvs)
return -EFAULT;
}

return do_utimes(filename, tvs ? ktvs : NULL);
return do_utimes(AT_FDCWD, filename, tvs ? ktvs : NULL);
}

#define MAX_SELECT_SECONDS \
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/sparc64/kernel/sys_sparc32.c
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ asmlinkage long sys32_utimes(char __user *filename,
return -EFAULT;
}

return do_utimes(filename, (tvs ? &ktvs[0] : NULL));
return do_utimes(AT_FDCWD, filename, (tvs ? &ktvs[0] : NULL));
}

/* These are here just in case some old sparc32 binary calls it. */
Expand Down Expand Up @@ -1003,7 +1003,7 @@ asmlinkage long sys32_adjtimex(struct timex32 __user *utp)
asmlinkage long sparc32_open(const char __user *filename,
int flags, int mode)
{
return do_sys_open(filename, flags, mode);
return do_sys_open(AT_FDCWD, filename, flags, mode);
}

extern unsigned long do_mremap(unsigned long addr,
Expand Down
48 changes: 42 additions & 6 deletions trunk/fs/compat.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ asmlinkage long compat_sys_utime(char __user *filename, struct compat_utimbuf __
tv[0].tv_usec = 0;
tv[1].tv_usec = 0;
}
return do_utimes(filename, t ? tv : NULL);
return do_utimes(AT_FDCWD, filename, t ? tv : NULL);
}

asmlinkage long compat_sys_utimes(char __user *filename, struct compat_timeval __user *t)
asmlinkage long compat_sys_futimesat(int dfd, char __user *filename, struct compat_timeval __user *t)
{
struct timeval tv[2];

Expand All @@ -82,14 +82,19 @@ asmlinkage long compat_sys_utimes(char __user *filename, struct compat_timeval _
get_user(tv[1].tv_usec, &t[1].tv_usec))
return -EFAULT;
}
return do_utimes(filename, t ? tv : NULL);
return do_utimes(dfd, filename, t ? tv : NULL);
}

asmlinkage long compat_sys_utimes(char __user *filename, struct compat_timeval __user *t)
{
return compat_sys_futimesat(AT_FDCWD, filename, t);
}

asmlinkage long compat_sys_newstat(char __user * filename,
struct compat_stat __user *statbuf)
{
struct kstat stat;
int error = vfs_stat(filename, &stat);
int error = vfs_stat_fd(AT_FDCWD, filename, &stat);

if (!error)
error = cp_compat_stat(&stat, statbuf);
Expand All @@ -100,13 +105,34 @@ asmlinkage long compat_sys_newlstat(char __user * filename,
struct compat_stat __user *statbuf)
{
struct kstat stat;
int error = vfs_lstat(filename, &stat);
int error = vfs_lstat_fd(AT_FDCWD, filename, &stat);

if (!error)
error = cp_compat_stat(&stat, statbuf);
return error;
}

asmlinkage long compat_sys_newfstatat(int dfd, char __user *filename,
struct compat_stat __user *statbuf, int flag)
{
struct kstat stat;
int error = -EINVAL;

if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0)
goto out;

if (flag & AT_SYMLINK_NOFOLLOW)
error = vfs_lstat_fd(dfd, filename, &stat);
else
error = vfs_stat_fd(dfd, filename, &stat);

if (!error)
error = cp_compat_stat(&stat, statbuf);

out:
return error;
}

asmlinkage long compat_sys_newfstat(unsigned int fd,
struct compat_stat __user * statbuf)
{
Expand Down Expand Up @@ -1290,7 +1316,17 @@ compat_sys_writev(unsigned long fd, const struct compat_iovec __user *vec, unsig
asmlinkage long
compat_sys_open(const char __user *filename, int flags, int mode)
{
return do_sys_open(filename, flags, mode);
return do_sys_open(AT_FDCWD, filename, flags, mode);
}

/*
* Exactly like fs/open.c:sys_openat(), except that it doesn't set the
* O_LARGEFILE flag.
*/
asmlinkage long
compat_sys_openat(int dfd, const char __user *filename, int flags, int mode)
{
return do_sys_open(dfd, filename, flags, mode);
}

/*
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ struct file *open_exec(const char *name)
int err;
struct file *file;

err = path_lookup_open(name, LOOKUP_FOLLOW, &nd, FMODE_READ);
err = path_lookup_open(AT_FDCWD, name, LOOKUP_FOLLOW, &nd, FMODE_READ);
file = ERR_PTR(err);

if (!err) {
Expand Down
Loading

0 comments on commit 55fca48

Please sign in to comment.