Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linux/linux_file.c
Show First 20 Lines • Show All 1,732 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
int | int | ||||
linux_fchownat(struct thread *td, struct linux_fchownat_args *args) | linux_fchownat(struct thread *td, struct linux_fchownat_args *args) | ||||
{ | { | ||||
char *path; | char *path; | ||||
int error, dfd, flag; | int error, dfd, flag; | ||||
if (args->flag & ~LINUX_AT_SYMLINK_NOFOLLOW) | if (args->flag & LINUX_AT_EMPTY_PATH) | ||||
kib: You broke detection of the unknown flags. | |||||
return (kern_fchown(td, args->dfd, args->uid, args->gid)); | |||||
if (args->flag & ~LINUX_AT_SYMLINK_NOFOLLOW) { | |||||
linux_msg(td, "fchownat unsupported flag 0x%x", | |||||
args->flag); | |||||
return (EINVAL); | return (EINVAL); | ||||
} | |||||
dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; | dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; | ||||
flag = (args->flag & LINUX_AT_SYMLINK_NOFOLLOW) == 0 ? 0 : | flag = (args->flag & LINUX_AT_SYMLINK_NOFOLLOW) == 0 ? 0 : | ||||
AT_SYMLINK_NOFOLLOW; | AT_SYMLINK_NOFOLLOW; | ||||
if (!LUSECONVPATH(td)) { | if (!LUSECONVPATH(td)) { | ||||
return (kern_fchownat(td, dfd, args->filename, UIO_USERSPACE, | return (kern_fchownat(td, dfd, args->filename, UIO_USERSPACE, | ||||
args->uid, args->gid, flag)); | args->uid, args->gid, flag)); | ||||
} | } | ||||
Not Done Inline ActionsExtra () kib: Extra () | |||||
Done Inline ActionsThis is copy/pasted all over the tree; I'll fix it in a later sweep. trasz: This is copy/pasted all over the tree; I'll fix it in a later sweep.
| |||||
LCONVPATHEXIST_AT(td, args->filename, &path, dfd); | LCONVPATHEXIST_AT(td, args->filename, &path, dfd); | ||||
error = kern_fchownat(td, dfd, path, UIO_SYSSPACE, args->uid, args->gid, | error = kern_fchownat(td, dfd, path, UIO_SYSSPACE, args->uid, args->gid, | ||||
flag); | flag); | ||||
LFREEPATH(path); | LFREEPATH(path); | ||||
return (error); | return (error); | ||||
} | } | ||||
#ifdef LINUX_LEGACY_SYSCALLS | #ifdef LINUX_LEGACY_SYSCALLS | ||||
▲ Show 20 Lines • Show All 266 Lines • Show Last 20 Lines |
You broke detection of the unknown flags.