9pfs: assume utimensat() and futimens() are present
The utimensat() and futimens() syscalls have been around for ages (ie, glibc 2.6 and linux 2.6.22), and the decision was already taken to switch to utimensat() anyway when fixing CVE-2016-9602 in 2.9. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
4be56c1959
commit
24df3371d9
@ -945,7 +945,8 @@ static int process_requests(int sock)
|
|||||||
&spec[0].tv_sec, &spec[0].tv_nsec,
|
&spec[0].tv_sec, &spec[0].tv_nsec,
|
||||||
&spec[1].tv_sec, &spec[1].tv_nsec);
|
&spec[1].tv_sec, &spec[1].tv_nsec);
|
||||||
if (retval > 0) {
|
if (retval > 0) {
|
||||||
retval = qemu_utimens(path.data, spec);
|
retval = utimensat(AT_FDCWD, path.data, spec,
|
||||||
|
AT_SYMLINK_NOFOLLOW);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
retval = -errno;
|
retval = -errno;
|
||||||
}
|
}
|
||||||
|
@ -378,7 +378,6 @@ static int handle_utimensat(FsContext *ctx, V9fsPath *fs_path,
|
|||||||
const struct timespec *buf)
|
const struct timespec *buf)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
#ifdef CONFIG_UTIMENSAT
|
|
||||||
int fd;
|
int fd;
|
||||||
struct handle_data *data = (struct handle_data *)ctx->private;
|
struct handle_data *data = (struct handle_data *)ctx->private;
|
||||||
|
|
||||||
@ -388,10 +387,6 @@ static int handle_utimensat(FsContext *ctx, V9fsPath *fs_path,
|
|||||||
}
|
}
|
||||||
ret = futimens(fd, buf);
|
ret = futimens(fd, buf);
|
||||||
close(fd);
|
close(fd);
|
||||||
#else
|
|
||||||
ret = -1;
|
|
||||||
errno = ENOSYS;
|
|
||||||
#endif
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user