1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 18:35:07 +00:00

Kernel: Make utime() take path+length, remove SmapDisabler

This commit is contained in:
Andreas Kling 2020-01-06 12:23:30 +01:00
parent 1226fec19e
commit 53bda09d15
3 changed files with 18 additions and 17 deletions

View file

@ -1432,25 +1432,21 @@ int Process::sys$close(int fd)
return rc;
}
int Process::sys$utime(const char* pathname, const utimbuf* buf)
int Process::sys$utime(const char* user_path, size_t path_length, const utimbuf* user_buf)
{
SmapDisabler disabler;
if (!validate_read_str(pathname))
if (user_buf && !validate_read_typed(user_buf))
return -EFAULT;
if (buf && !validate_read_typed(buf))
return -EFAULT;
time_t atime;
time_t mtime;
if (buf) {
atime = buf->actime;
mtime = buf->modtime;
auto path = get_syscall_path_argument(user_path, path_length);
if (path.is_error())
return path.error();
utimbuf buf;
if (user_buf) {
copy_from_user(&buf, user_buf, sizeof(buf));
} else {
struct timeval now;
kgettimeofday(now);
mtime = now.tv_sec;
atime = now.tv_sec;
auto now = kgettimeofday();
buf = { now.tv_sec, now.tv_sec };
}
return VFS::the().utime(StringView(pathname), current_directory(), atime, mtime);
return VFS::the().utime(path.value(), current_directory(), buf.actime, buf.modtime);
}
int Process::sys$access(const char* user_path, size_t path_length, int mode)