Message ID | 20191122174040.569252-1-ariadne@dereferenced.org |
---|---|
State | New |
Headers | show |
Series | linux-user: fix translation of statx structures | expand |
On Fri, Nov 22, 2019 at 7:22 PM Ariadne Conill <ariadne@dereferenced.org> wrote: > > All timestamps were copied to atime instead of to their respective > fields. > > Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> > --- What a bug. Laurent, perhaps a good candidate for 4.2? Thanks for submitting this, Ariadne Conill! Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com> > linux-user/syscall.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index ce399a55f0..171c0caef3 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -6743,12 +6743,12 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx, > __put_user(host_stx->stx_attributes_mask, &target_stx->stx_attributes_mask); > __put_user(host_stx->stx_atime.tv_sec, &target_stx->stx_atime.tv_sec); > __put_user(host_stx->stx_atime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_atime.tv_nsec); > + __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_btime.tv_sec); > + __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_btime.tv_nsec); > + __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_ctime.tv_sec); > + __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_ctime.tv_nsec); > + __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_mtime.tv_sec); > + __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_mtime.tv_nsec); > __put_user(host_stx->stx_rdev_major, &target_stx->stx_rdev_major); > __put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor); > __put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major); > -- > 2.24.0 > >
On 11/22/19 7:27 PM, Aleksandar Markovic wrote: > On Fri, Nov 22, 2019 at 7:22 PM Ariadne Conill <ariadne@dereferenced.org> wrote: >> >> All timestamps were copied to atime instead of to their respective >> fields. >> Fixes: efa921845c0 >> Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> >> --- > > What a bug. > > Laurent, perhaps a good candidate for 4.2? Agreed. > > Thanks for submitting this, Ariadne Conill! And welcome to QEMU :) > Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> linux-user/syscall.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index ce399a55f0..171c0caef3 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -6743,12 +6743,12 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx, >> __put_user(host_stx->stx_attributes_mask, &target_stx->stx_attributes_mask); >> __put_user(host_stx->stx_atime.tv_sec, &target_stx->stx_atime.tv_sec); >> __put_user(host_stx->stx_atime.tv_nsec, &target_stx->stx_atime.tv_nsec); >> - __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_atime.tv_sec); >> - __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_atime.tv_nsec); >> - __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_atime.tv_sec); >> - __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_atime.tv_nsec); >> - __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_atime.tv_sec); >> - __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_atime.tv_nsec); >> + __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_btime.tv_sec); >> + __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_btime.tv_nsec); >> + __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_ctime.tv_sec); >> + __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_ctime.tv_nsec); >> + __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_mtime.tv_sec); >> + __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_mtime.tv_nsec); >> __put_user(host_stx->stx_rdev_major, &target_stx->stx_rdev_major); >> __put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor); >> __put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major); >> -- >> 2.24.0 >> >> >
Le 22/11/2019 à 18:40, Ariadne Conill a écrit : > All timestamps were copied to atime instead of to their respective > fields. > > Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> > --- > linux-user/syscall.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index ce399a55f0..171c0caef3 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -6743,12 +6743,12 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx, > __put_user(host_stx->stx_attributes_mask, &target_stx->stx_attributes_mask); > __put_user(host_stx->stx_atime.tv_sec, &target_stx->stx_atime.tv_sec); > __put_user(host_stx->stx_atime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_atime.tv_nsec); > + __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_btime.tv_sec); > + __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_btime.tv_nsec); > + __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_ctime.tv_sec); > + __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_ctime.tv_nsec); > + __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_mtime.tv_sec); > + __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_mtime.tv_nsec); > __put_user(host_stx->stx_rdev_major, &target_stx->stx_rdev_major); > __put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor); > __put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major); > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Hello, On Fri, Nov 22, 2019 at 12:27 PM Aleksandar Markovic <aleksandar.m.mail@gmail.com> wrote: > > On Fri, Nov 22, 2019 at 7:22 PM Ariadne Conill <ariadne@dereferenced.org> wrote: > > > > All timestamps were copied to atime instead of to their respective > > fields. > > > > Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> > > --- > > What a bug. Yes, in Alpine qemu+binfmt_misc+chroot environment, this bug caused all files to have an observed mtime set to the UNIX epoch, which caused problems with building Autoconf-based applications. This really irked me so I took the time to dig into it. > > Laurent, perhaps a good candidate for 4.2? > > Thanks for submitting this, Ariadne Conill! Not a problem. Ariadne
Le 22/11/2019 à 18:40, Ariadne Conill a écrit : > All timestamps were copied to atime instead of to their respective > fields. > > Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> > --- > linux-user/syscall.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index ce399a55f0..171c0caef3 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -6743,12 +6743,12 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx, > __put_user(host_stx->stx_attributes_mask, &target_stx->stx_attributes_mask); > __put_user(host_stx->stx_atime.tv_sec, &target_stx->stx_atime.tv_sec); > __put_user(host_stx->stx_atime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_atime.tv_nsec); > - __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_atime.tv_sec); > - __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_atime.tv_nsec); > + __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_btime.tv_sec); > + __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_btime.tv_nsec); > + __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_ctime.tv_sec); > + __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_ctime.tv_nsec); > + __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_mtime.tv_sec); > + __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_mtime.tv_nsec); > __put_user(host_stx->stx_rdev_major, &target_stx->stx_rdev_major); > __put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor); > __put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major); > Applied to my linux-user branch for 4.2. Thanks, Laurent
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index ce399a55f0..171c0caef3 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6743,12 +6743,12 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx, __put_user(host_stx->stx_attributes_mask, &target_stx->stx_attributes_mask); __put_user(host_stx->stx_atime.tv_sec, &target_stx->stx_atime.tv_sec); __put_user(host_stx->stx_atime.tv_nsec, &target_stx->stx_atime.tv_nsec); - __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_atime.tv_sec); - __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_atime.tv_nsec); - __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_atime.tv_sec); - __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_atime.tv_nsec); - __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_atime.tv_sec); - __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_atime.tv_nsec); + __put_user(host_stx->stx_btime.tv_sec, &target_stx->stx_btime.tv_sec); + __put_user(host_stx->stx_btime.tv_nsec, &target_stx->stx_btime.tv_nsec); + __put_user(host_stx->stx_ctime.tv_sec, &target_stx->stx_ctime.tv_sec); + __put_user(host_stx->stx_ctime.tv_nsec, &target_stx->stx_ctime.tv_nsec); + __put_user(host_stx->stx_mtime.tv_sec, &target_stx->stx_mtime.tv_sec); + __put_user(host_stx->stx_mtime.tv_nsec, &target_stx->stx_mtime.tv_nsec); __put_user(host_stx->stx_rdev_major, &target_stx->stx_rdev_major); __put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor); __put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major);
All timestamps were copied to atime instead of to their respective fields. Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> --- linux-user/syscall.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)