mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-02 20:29:20 +00:00
VFS: Make chown() and lchown() call fchownat()
Make the chown() and lchown() syscalls jump to the fchownat() syscall with the appropriate extra arguments. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
c3c4f69424
commit
55e4def0a6
1 changed files with 7 additions and 34 deletions
41
fs/open.c
41
fs/open.c
|
@ -537,25 +537,6 @@ static int chown_common(struct path *path, uid_t user, gid_t group)
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
|
|
||||||
{
|
|
||||||
struct path path;
|
|
||||||
int error;
|
|
||||||
|
|
||||||
error = user_path(filename, &path);
|
|
||||||
if (error)
|
|
||||||
goto out;
|
|
||||||
error = mnt_want_write(path.mnt);
|
|
||||||
if (error)
|
|
||||||
goto out_release;
|
|
||||||
error = chown_common(&path, user, group);
|
|
||||||
mnt_drop_write(path.mnt);
|
|
||||||
out_release:
|
|
||||||
path_put(&path);
|
|
||||||
out:
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user,
|
SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user,
|
||||||
gid_t, group, int, flag)
|
gid_t, group, int, flag)
|
||||||
{
|
{
|
||||||
|
@ -583,23 +564,15 @@ out:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
|
||||||
|
{
|
||||||
|
return sys_fchownat(AT_FDCWD, filename, user, group, 0);
|
||||||
|
}
|
||||||
|
|
||||||
SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)
|
SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)
|
||||||
{
|
{
|
||||||
struct path path;
|
return sys_fchownat(AT_FDCWD, filename, user, group,
|
||||||
int error;
|
AT_SYMLINK_NOFOLLOW);
|
||||||
|
|
||||||
error = user_lpath(filename, &path);
|
|
||||||
if (error)
|
|
||||||
goto out;
|
|
||||||
error = mnt_want_write(path.mnt);
|
|
||||||
if (error)
|
|
||||||
goto out_release;
|
|
||||||
error = chown_common(&path, user, group);
|
|
||||||
mnt_drop_write(path.mnt);
|
|
||||||
out_release:
|
|
||||||
path_put(&path);
|
|
||||||
out:
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
|
SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue