* [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens()
@ 2017-05-19 14:50 Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 1/2] 9pfs: assume utimensat() and futimens() are present Greg Kurz
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Greg Kurz @ 2017-05-19 14:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Eric Blake, Greg Kurz
It is currently only used by 9pfs and virtfs-proxy-helper. This series convert
them to utimensat() and futimens().
--
Greg
---
Greg Kurz (2):
9pfs: assume utimensat() and futimens() are present
util: drop old utimensat() compat code
configure | 22 --------------------
fsdev/virtfs-proxy-helper.c | 3 ++-
hw/9pfs/9p-handle.c | 5 -----
include/sysemu/os-posix.h | 11 ----------
util/oslib-posix.c | 47 -------------------------------------------
5 files changed, 2 insertions(+), 86 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 1/2] 9pfs: assume utimensat() and futimens() are present
2017-05-19 14:50 [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Greg Kurz
@ 2017-05-19 14:50 ` Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 2/2] util: drop old utimensat() compat code Greg Kurz
2017-05-22 14:28 ` [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Eric Blake
2 siblings, 0 replies; 4+ messages in thread
From: Greg Kurz @ 2017-05-19 14:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Eric Blake, Greg Kurz
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>
---
fsdev/virtfs-proxy-helper.c | 3 ++-
hw/9pfs/9p-handle.c | 5 -----
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
index 54f7ad1c48f0..617e19cd0b88 100644
--- a/fsdev/virtfs-proxy-helper.c
+++ b/fsdev/virtfs-proxy-helper.c
@@ -945,7 +945,8 @@ static int process_requests(int sock)
&spec[0].tv_sec, &spec[0].tv_nsec,
&spec[1].tv_sec, &spec[1].tv_nsec);
if (retval > 0) {
- retval = qemu_utimens(path.data, spec);
+ retval = utimensat(AT_FDCWD, path.data, spec,
+ AT_SYMLINK_NOFOLLOW);
if (retval < 0) {
retval = -errno;
}
diff --git a/hw/9pfs/9p-handle.c b/hw/9pfs/9p-handle.c
index 1687661bc95a..9875f1894cc5 100644
--- a/hw/9pfs/9p-handle.c
+++ b/hw/9pfs/9p-handle.c
@@ -378,7 +378,6 @@ static int handle_utimensat(FsContext *ctx, V9fsPath *fs_path,
const struct timespec *buf)
{
int ret;
-#ifdef CONFIG_UTIMENSAT
int fd;
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);
close(fd);
-#else
- ret = -1;
- errno = ENOSYS;
-#endif
return ret;
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH 2/2] util: drop old utimensat() compat code
2017-05-19 14:50 [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 1/2] 9pfs: assume utimensat() and futimens() are present Greg Kurz
@ 2017-05-19 14:50 ` Greg Kurz
2017-05-22 14:28 ` [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Eric Blake
2 siblings, 0 replies; 4+ messages in thread
From: Greg Kurz @ 2017-05-19 14:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Eric Blake, Greg Kurz
Now that 9pfs and virtfs-proxy-helper have been converted to utimensat(),
we don't need to keep qemu_utimens() anymore.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
configure | 22 ---------------------
include/sysemu/os-posix.h | 11 -----------
util/oslib-posix.c | 47 ---------------------------------------------
3 files changed, 80 deletions(-)
diff --git a/configure b/configure
index 139638e922e0..1dea17ed2e73 100755
--- a/configure
+++ b/configure
@@ -3623,25 +3623,6 @@ if compile_prog "" "" ; then
inotify1=yes
fi
-# check if utimensat and futimens are supported
-utimens=no
-cat > $TMPC << EOF
-#define _ATFILE_SOURCE
-#include <stddef.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-int main(void)
-{
- utimensat(AT_FDCWD, "foo", NULL, 0);
- futimens(0, NULL);
- return 0;
-}
-EOF
-if compile_prog "" "" ; then
- utimens=yes
-fi
-
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
@@ -5427,9 +5408,6 @@ fi
if test "$curses" = "yes" ; then
echo "CONFIG_CURSES=y" >> $config_host_mak
fi
-if test "$utimens" = "yes" ; then
- echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
-fi
if test "$pipe2" = "yes" ; then
echo "CONFIG_PIPE2=y" >> $config_host_mak
fi
diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
index 900bdcb45ad0..629c8c648b7a 100644
--- a/include/sysemu/os-posix.h
+++ b/include/sysemu/os-posix.h
@@ -51,17 +51,6 @@ int os_mlock(void);
typedef struct timeval qemu_timeval;
#define qemu_gettimeofday(tp) gettimeofday(tp, NULL)
-#ifndef CONFIG_UTIMENSAT
-#ifndef UTIME_NOW
-# define UTIME_NOW ((1l << 30) - 1l)
-#endif
-#ifndef UTIME_OMIT
-# define UTIME_OMIT ((1l << 30) - 2l)
-#endif
-#endif
-typedef struct timespec qemu_timespec;
-int qemu_utimens(const char *path, const qemu_timespec *times);
-
bool is_daemonized(void);
/**
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 4d9189e9efcf..7e28c161b257 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -207,53 +207,6 @@ int qemu_pipe(int pipefd[2])
return ret;
}
-int qemu_utimens(const char *path, const struct timespec *times)
-{
- struct timeval tv[2], tv_now;
- struct stat st;
- int i;
-#ifdef CONFIG_UTIMENSAT
- int ret;
-
- ret = utimensat(AT_FDCWD, path, times, AT_SYMLINK_NOFOLLOW);
- if (ret != -1 || errno != ENOSYS) {
- return ret;
- }
-#endif
- /* Fallback: use utimes() instead of utimensat() */
-
- /* happy if special cases */
- if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT) {
- return 0;
- }
- if (times[0].tv_nsec == UTIME_NOW && times[1].tv_nsec == UTIME_NOW) {
- return utimes(path, NULL);
- }
-
- /* prepare for hard cases */
- if (times[0].tv_nsec == UTIME_NOW || times[1].tv_nsec == UTIME_NOW) {
- gettimeofday(&tv_now, NULL);
- }
- if (times[0].tv_nsec == UTIME_OMIT || times[1].tv_nsec == UTIME_OMIT) {
- stat(path, &st);
- }
-
- for (i = 0; i < 2; i++) {
- if (times[i].tv_nsec == UTIME_NOW) {
- tv[i].tv_sec = tv_now.tv_sec;
- tv[i].tv_usec = tv_now.tv_usec;
- } else if (times[i].tv_nsec == UTIME_OMIT) {
- tv[i].tv_sec = (i == 0) ? st.st_atime : st.st_mtime;
- tv[i].tv_usec = 0;
- } else {
- tv[i].tv_sec = times[i].tv_sec;
- tv[i].tv_usec = times[i].tv_nsec / 1000;
- }
- }
-
- return utimes(path, &tv[0]);
-}
-
char *
qemu_get_local_state_pathname(const char *relative_pathname)
{
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens()
2017-05-19 14:50 [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 1/2] 9pfs: assume utimensat() and futimens() are present Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 2/2] util: drop old utimensat() compat code Greg Kurz
@ 2017-05-22 14:28 ` Eric Blake
2 siblings, 0 replies; 4+ messages in thread
From: Eric Blake @ 2017-05-22 14:28 UTC (permalink / raw)
To: Greg Kurz, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 502 bytes --]
On 05/19/2017 09:50 AM, Greg Kurz wrote:
> It is currently only used by 9pfs and virtfs-proxy-helper. This series convert
> them to utimensat() and futimens().
>
> --
> Greg
>
> ---
>
> Greg Kurz (2):
> 9pfs: assume utimensat() and futimens() are present
> util: drop old utimensat() compat code
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-05-22 14:29 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-19 14:50 [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 1/2] 9pfs: assume utimensat() and futimens() are present Greg Kurz
2017-05-19 14:50 ` [Qemu-devel] [PATCH 2/2] util: drop old utimensat() compat code Greg Kurz
2017-05-22 14:28 ` [Qemu-devel] [PATCH 0/2] get rid of qemu_utimens() Eric Blake
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).