* [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl @ 2015-12-18 6:26 Chen Gang 2015-12-18 6:51 ` Chen Gang 2015-12-18 9:37 ` Laurent Vivier 0 siblings, 2 replies; 11+ messages in thread From: Chen Gang @ 2015-12-18 6:26 UTC (permalink / raw) To: riku.voipio; +Cc: Peter Maydell, qemu-devel, Richard Henderson For fcntl, it always needs to notice about it, just like do_fcntl() has done, or it will cause issue (e.g. alpha host run i386 guest). Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> --- linux-user/syscall.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 0f8adeb..1a60e6f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9007,7 +9007,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, if (((CPUARMState *)cpu_env)->eabi) { if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) goto efault; - fl.l_type = tswap16(target_efl->l_type); + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), + flock_tbl); fl.l_whence = tswap16(target_efl->l_whence); fl.l_start = tswap64(target_efl->l_start); fl.l_len = tswap64(target_efl->l_len); @@ -9018,7 +9019,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, { if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) goto efault; - fl.l_type = tswap16(target_fl->l_type); + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), + flock_tbl); fl.l_whence = tswap16(target_fl->l_whence); fl.l_start = tswap64(target_fl->l_start); fl.l_len = tswap64(target_fl->l_len); @@ -9031,7 +9033,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, if (((CPUARMState *)cpu_env)->eabi) { if (!lock_user_struct(VERIFY_WRITE, target_efl, arg3, 0)) goto efault; - target_efl->l_type = tswap16(fl.l_type); + target_efl->l_type = host_to_target_bitmask( + tswap16(fl.l_type), flock_tbl); target_efl->l_whence = tswap16(fl.l_whence); target_efl->l_start = tswap64(fl.l_start); target_efl->l_len = tswap64(fl.l_len); @@ -9042,7 +9045,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, { if (!lock_user_struct(VERIFY_WRITE, target_fl, arg3, 0)) goto efault; - target_fl->l_type = tswap16(fl.l_type); + target_fl->l_type = host_to_target_bitmask( + tswap16(fl.l_type), flock_tbl); target_fl->l_whence = tswap16(fl.l_whence); target_fl->l_start = tswap64(fl.l_start); target_fl->l_len = tswap64(fl.l_len); @@ -9058,7 +9062,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, if (((CPUARMState *)cpu_env)->eabi) { if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) goto efault; - fl.l_type = tswap16(target_efl->l_type); + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), + flock_tbl); fl.l_whence = tswap16(target_efl->l_whence); fl.l_start = tswap64(target_efl->l_start); fl.l_len = tswap64(target_efl->l_len); @@ -9069,7 +9074,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, { if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) goto efault; - fl.l_type = tswap16(target_fl->l_type); + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), + flock_tbl); fl.l_whence = tswap16(target_fl->l_whence); fl.l_start = tswap64(target_fl->l_start); fl.l_len = tswap64(target_fl->l_len); -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 6:26 [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl Chen Gang @ 2015-12-18 6:51 ` Chen Gang 2015-12-18 9:41 ` Laurent Vivier 2015-12-18 9:37 ` Laurent Vivier 1 sibling, 1 reply; 11+ messages in thread From: Chen Gang @ 2015-12-18 6:51 UTC (permalink / raw) To: riku.voipio; +Cc: Peter Maydell, qemu-devel, Richard Henderson I found this issue during my working time, it is about sw_64 (almost the same as alpha) host running i386 wine programs. I also found another issue, but I am not quite sure whether it is worth enough for our upstream: The related fix patch is below, which will let the initialization slower, but for most archs, they have no this issue. linux-user/mmap.c: Always zero MAP_ANONYMOUS memory in target_mmap() In some architectures, they have no policy to zero MAP_ANONYMOUS memory, which will cause issue for qemu target_mmap. Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 7b459d5..9c9152d 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -567,6 +567,10 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, printf("\n"); #endif tb_invalidate_phys_range(start, start + len); + if ((prot & PROT_WRITE) && (flags & MAP_ANONYMOUS) + && ((flags & MAP_PRIVATE) || (fd == -1))) { + memset(g2h(start), 0, len); + } mmap_unlock(); return start; fail: Thanks. On 2015年12月18日 14:26, Chen Gang wrote: > > For fcntl, it always needs to notice about it, just like do_fcntl() has > done, or it will cause issue (e.g. alpha host run i386 guest). > > Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> > --- > linux-user/syscall.c | 18 ++++++++++++------ > 1 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 0f8adeb..1a60e6f 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -9007,7 +9007,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > if (((CPUARMState *)cpu_env)->eabi) { > if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_efl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_efl->l_whence); > fl.l_start = tswap64(target_efl->l_start); > fl.l_len = tswap64(target_efl->l_len); > @@ -9018,7 +9019,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > { > if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_fl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_fl->l_whence); > fl.l_start = tswap64(target_fl->l_start); > fl.l_len = tswap64(target_fl->l_len); > @@ -9031,7 +9033,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > if (((CPUARMState *)cpu_env)->eabi) { > if (!lock_user_struct(VERIFY_WRITE, target_efl, arg3, 0)) > goto efault; > - target_efl->l_type = tswap16(fl.l_type); > + target_efl->l_type = host_to_target_bitmask( > + tswap16(fl.l_type), flock_tbl); > target_efl->l_whence = tswap16(fl.l_whence); > target_efl->l_start = tswap64(fl.l_start); > target_efl->l_len = tswap64(fl.l_len); > @@ -9042,7 +9045,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > { > if (!lock_user_struct(VERIFY_WRITE, target_fl, arg3, 0)) > goto efault; > - target_fl->l_type = tswap16(fl.l_type); > + target_fl->l_type = host_to_target_bitmask( > + tswap16(fl.l_type), flock_tbl); > target_fl->l_whence = tswap16(fl.l_whence); > target_fl->l_start = tswap64(fl.l_start); > target_fl->l_len = tswap64(fl.l_len); > @@ -9058,7 +9062,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > if (((CPUARMState *)cpu_env)->eabi) { > if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_efl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_efl->l_whence); > fl.l_start = tswap64(target_efl->l_start); > fl.l_len = tswap64(target_efl->l_len); > @@ -9069,7 +9074,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > { > if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_fl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_fl->l_whence); > fl.l_start = tswap64(target_fl->l_start); > fl.l_len = tswap64(target_fl->l_len); > -- Chen Gang (陈刚) Open, share, and attitude like air, water, and life which God blessed ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 6:51 ` Chen Gang @ 2015-12-18 9:41 ` Laurent Vivier 2015-12-18 10:47 ` Chen Gang 0 siblings, 1 reply; 11+ messages in thread From: Laurent Vivier @ 2015-12-18 9:41 UTC (permalink / raw) To: Chen Gang, riku.voipio; +Cc: Peter Maydell, qemu-devel, Richard Henderson Le 18/12/2015 07:51, Chen Gang a écrit : > > I found this issue during my working time, it is about sw_64 (almost the > same as alpha) host running i386 wine programs. > > I also found another issue, but I am not quite sure whether it is worth > enough for our upstream: The related fix patch is below, which will let > the initialization slower, but for most archs, they have no this issue. > > linux-user/mmap.c: Always zero MAP_ANONYMOUS memory in target_mmap() > > In some architectures, they have no policy to zero MAP_ANONYMOUS memory, > which will cause issue for qemu target_mmap. > > Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> > > diff --git a/linux-user/mmap.c b/linux-user/mmap.c > index 7b459d5..9c9152d 100644 > --- a/linux-user/mmap.c > +++ b/linux-user/mmap.c > @@ -567,6 +567,10 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, > printf("\n"); > #endif > tb_invalidate_phys_range(start, start + len); > + if ((prot & PROT_WRITE) && (flags & MAP_ANONYMOUS) > + && ((flags & MAP_PRIVATE) || (fd == -1))) { > + memset(g2h(start), 0, len); > + } IMHO, their kernel needs a fix, mmap(2): MAP_ANONYMOUS The mapping is not backed by any file; its contents are initial‐ ized to zero. > mmap_unlock(); > return start; > fail: > > > Thanks. Laurent ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 9:41 ` Laurent Vivier @ 2015-12-18 10:47 ` Chen Gang 2015-12-21 2:47 ` Chen Gang 0 siblings, 1 reply; 11+ messages in thread From: Chen Gang @ 2015-12-18 10:47 UTC (permalink / raw) To: Laurent Vivier, riku.voipio; +Cc: Peter Maydell, qemu-devel, Richard Henderson On 2015年12月18日 17:41, Laurent Vivier wrote: > > > Le 18/12/2015 07:51, Chen Gang a écrit : >> >> I found this issue during my working time, it is about sw_64 (almost the >> same as alpha) host running i386 wine programs. >> >> I also found another issue, but I am not quite sure whether it is worth >> enough for our upstream: The related fix patch is below, which will let >> the initialization slower, but for most archs, they have no this issue. >> >> linux-user/mmap.c: Always zero MAP_ANONYMOUS memory in target_mmap() >> >> In some architectures, they have no policy to zero MAP_ANONYMOUS memory, >> which will cause issue for qemu target_mmap. >> >> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> >> >> diff --git a/linux-user/mmap.c b/linux-user/mmap.c >> index 7b459d5..9c9152d 100644 >> --- a/linux-user/mmap.c >> +++ b/linux-user/mmap.c >> @@ -567,6 +567,10 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, >> printf("\n"); >> #endif >> tb_invalidate_phys_range(start, start + len); >> + if ((prot & PROT_WRITE) && (flags & MAP_ANONYMOUS) >> + && ((flags & MAP_PRIVATE) || (fd == -1))) { >> + memset(g2h(start), 0, len); >> + } > > IMHO, their kernel needs a fix, mmap(2): > > MAP_ANONYMOUS > The mapping is not backed by any file; its contents are initial‐ > ized to zero. > OK, Thanks. -- Chen Gang (陈刚) Open, share, and attitude like air, water, and life which God blessed ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 10:47 ` Chen Gang @ 2015-12-21 2:47 ` Chen Gang 0 siblings, 0 replies; 11+ messages in thread From: Chen Gang @ 2015-12-21 2:47 UTC (permalink / raw) To: Laurent Vivier, riku.voipio; +Cc: Peter Maydell, qemu-devel, Richard Henderson On 2015年12月18日 18:47, Chen Gang wrote: > > On 2015年12月18日 17:41, Laurent Vivier wrote: >> >> Le 18/12/2015 07:51, Chen Gang a écrit : [...] >>> >>> +++ b/linux-user/mmap.c >>> @@ -567,6 +567,10 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, >>> printf("\n"); >>> #endif >>> tb_invalidate_phys_range(start, start + len); >>> + if ((prot & PROT_WRITE) && (flags & MAP_ANONYMOUS) >>> + && ((flags & MAP_PRIVATE) || (fd == -1))) { >>> + memset(g2h(start), 0, len); >>> + } >> >> IMHO, their kernel needs a fix, mmap(2): >> >> MAP_ANONYMOUS >> The mapping is not backed by any file; its contents are initial‐ >> ized to zero. >> Oh, sorry, after check again, it is not kernel's issue: mmap() will always zero the ANONYMOUS memory for kernel 3.8 in sw_64 arch. It is still our qemu's issue in mmap_frag (do not zero ANONYMOUS memory fragments), so I sent patch v2 for it, please help check. Thanks. > > OK, Thanks. > > -- Chen Gang (陈刚) Open, share, and attitude like air, water, and life which God blessed ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 6:26 [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl Chen Gang 2015-12-18 6:51 ` Chen Gang @ 2015-12-18 9:37 ` Laurent Vivier 2015-12-18 21:40 ` Chen Gang 1 sibling, 1 reply; 11+ messages in thread From: Laurent Vivier @ 2015-12-18 9:37 UTC (permalink / raw) To: Chen Gang, riku.voipio; +Cc: Peter Maydell, qemu-devel, Richard Henderson Le 18/12/2015 07:26, Chen Gang a écrit : > > For fcntl, it always needs to notice about it, just like do_fcntl() has > done, or it will cause issue (e.g. alpha host run i386 guest). > > Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> > --- > linux-user/syscall.c | 18 ++++++++++++------ > 1 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 0f8adeb..1a60e6f 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -9007,7 +9007,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > if (((CPUARMState *)cpu_env)->eabi) { > if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_efl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_efl->l_whence); > fl.l_start = tswap64(target_efl->l_start); > fl.l_len = tswap64(target_efl->l_len); > @@ -9018,7 +9019,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > { > if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_fl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_fl->l_whence); > fl.l_start = tswap64(target_fl->l_start); > fl.l_len = tswap64(target_fl->l_len); > @@ -9031,7 +9033,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > if (((CPUARMState *)cpu_env)->eabi) { > if (!lock_user_struct(VERIFY_WRITE, target_efl, arg3, 0)) > goto efault; > - target_efl->l_type = tswap16(fl.l_type); > + target_efl->l_type = host_to_target_bitmask( > + tswap16(fl.l_type), flock_tbl); > target_efl->l_whence = tswap16(fl.l_whence); > target_efl->l_start = tswap64(fl.l_start); > target_efl->l_len = tswap64(fl.l_len); > @@ -9042,7 +9045,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > { > if (!lock_user_struct(VERIFY_WRITE, target_fl, arg3, 0)) > goto efault; > - target_fl->l_type = tswap16(fl.l_type); > + target_fl->l_type = host_to_target_bitmask( > + tswap16(fl.l_type), flock_tbl); > target_fl->l_whence = tswap16(fl.l_whence); > target_fl->l_start = tswap64(fl.l_start); > target_fl->l_len = tswap64(fl.l_len); > @@ -9058,7 +9062,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > if (((CPUARMState *)cpu_env)->eabi) { > if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_efl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_efl->l_whence); > fl.l_start = tswap64(target_efl->l_start); > fl.l_len = tswap64(target_efl->l_len); > @@ -9069,7 +9074,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > { > if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) > goto efault; > - fl.l_type = tswap16(target_fl->l_type); > + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), > + flock_tbl); > fl.l_whence = tswap16(target_fl->l_whence); > fl.l_start = tswap64(target_fl->l_start); > fl.l_len = tswap64(target_fl->l_len); > This patch looks good to me, except that script/checkpatch.pl complains about "DOS line ending" and "line over 80 characters". Reviewed-by: Laurent Vivier <laurent@vivier.eu> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 9:37 ` Laurent Vivier @ 2015-12-18 21:40 ` Chen Gang 2015-12-18 21:58 ` Laurent Vivier 0 siblings, 1 reply; 11+ messages in thread From: Chen Gang @ 2015-12-18 21:40 UTC (permalink / raw) To: Laurent Vivier, Chen Gang, riku.voipio Cc: Peter Maydell, qemu-devel, Richard Henderson On 12/18/15 17:37, Laurent Vivier wrote: > > Le 18/12/2015 07:26, Chen Gang a écrit : >> >> For fcntl, it always needs to notice about it, just like do_fcntl() has >> done, or it will cause issue (e.g. alpha host run i386 guest). >> >> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> >> --- >> linux-user/syscall.c | 18 ++++++++++++------ >> 1 files changed, 12 insertions(+), 6 deletions(-) >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index 0f8adeb..1a60e6f 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -9007,7 +9007,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >> if (((CPUARMState *)cpu_env)->eabi) { >> if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) >> goto efault; >> - fl.l_type = tswap16(target_efl->l_type); >> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >> + flock_tbl); >> fl.l_whence = tswap16(target_efl->l_whence); >> fl.l_start = tswap64(target_efl->l_start); >> fl.l_len = tswap64(target_efl->l_len); >> @@ -9018,7 +9019,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >> { >> if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) >> goto efault; >> - fl.l_type = tswap16(target_fl->l_type); >> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >> + flock_tbl); >> fl.l_whence = tswap16(target_fl->l_whence); >> fl.l_start = tswap64(target_fl->l_start); >> fl.l_len = tswap64(target_fl->l_len); >> @@ -9031,7 +9033,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >> if (((CPUARMState *)cpu_env)->eabi) { >> if (!lock_user_struct(VERIFY_WRITE, target_efl, arg3, 0)) >> goto efault; >> - target_efl->l_type = tswap16(fl.l_type); >> + target_efl->l_type = host_to_target_bitmask( >> + tswap16(fl.l_type), flock_tbl); >> target_efl->l_whence = tswap16(fl.l_whence); >> target_efl->l_start = tswap64(fl.l_start); >> target_efl->l_len = tswap64(fl.l_len); >> @@ -9042,7 +9045,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >> { >> if (!lock_user_struct(VERIFY_WRITE, target_fl, arg3, 0)) >> goto efault; >> - target_fl->l_type = tswap16(fl.l_type); >> + target_fl->l_type = host_to_target_bitmask( >> + tswap16(fl.l_type), flock_tbl); >> target_fl->l_whence = tswap16(fl.l_whence); >> target_fl->l_start = tswap64(fl.l_start); >> target_fl->l_len = tswap64(fl.l_len); >> @@ -9058,7 +9062,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >> if (((CPUARMState *)cpu_env)->eabi) { >> if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) >> goto efault; >> - fl.l_type = tswap16(target_efl->l_type); >> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >> + flock_tbl); >> fl.l_whence = tswap16(target_efl->l_whence); >> fl.l_start = tswap64(target_efl->l_start); >> fl.l_len = tswap64(target_efl->l_len); >> @@ -9069,7 +9074,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >> { >> if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) >> goto efault; >> - fl.l_type = tswap16(target_fl->l_type); >> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >> + flock_tbl); >> fl.l_whence = tswap16(target_fl->l_whence); >> fl.l_start = tswap64(target_fl->l_start); >> fl.l_len = tswap64(target_fl->l_len); >> > > This patch looks good to me, except that script/checkpatch.pl complains > about "DOS line ending" and "line over 80 characters". > I did not get any script/checkpatch.pl complains, originally. Does my email client configuration is incorrect, then cause incorrect mail format? I guess not. The related reason is below. - I copy your full reply mail contents to a new file (diff.patch). - Remove all '> ' in vi editor (1,% s/^> //g) (so get the original patch contents). - ./script/checkpatch.pl diff.patch, it has no any complains. > Reviewed-by: Laurent Vivier <laurent@vivier.eu> > Thanks. -- Chen Gang Open, share, and attitude like air, water, and life which God blessed ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 21:40 ` Chen Gang @ 2015-12-18 21:58 ` Laurent Vivier 2015-12-18 22:12 ` Chen Gang 0 siblings, 1 reply; 11+ messages in thread From: Laurent Vivier @ 2015-12-18 21:58 UTC (permalink / raw) To: Chen Gang, Chen Gang, riku.voipio Cc: Peter Maydell, qemu-devel, Richard Henderson Le 18/12/2015 22:40, Chen Gang a écrit : > > On 12/18/15 17:37, Laurent Vivier wrote: >> >> Le 18/12/2015 07:26, Chen Gang a écrit : >>> >>> For fcntl, it always needs to notice about it, just like do_fcntl() has >>> done, or it will cause issue (e.g. alpha host run i386 guest). >>> >>> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com> >>> --- >>> linux-user/syscall.c | 18 ++++++++++++------ >>> 1 files changed, 12 insertions(+), 6 deletions(-) >>> >>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >>> index 0f8adeb..1a60e6f 100644 >>> --- a/linux-user/syscall.c >>> +++ b/linux-user/syscall.c >>> @@ -9007,7 +9007,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >>> if (((CPUARMState *)cpu_env)->eabi) { >>> if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) >>> goto efault; >>> - fl.l_type = tswap16(target_efl->l_type); >>> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >>> + flock_tbl); >>> fl.l_whence = tswap16(target_efl->l_whence); >>> fl.l_start = tswap64(target_efl->l_start); >>> fl.l_len = tswap64(target_efl->l_len); >>> @@ -9018,7 +9019,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >>> { >>> if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) >>> goto efault; >>> - fl.l_type = tswap16(target_fl->l_type); >>> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >>> + flock_tbl); >>> fl.l_whence = tswap16(target_fl->l_whence); >>> fl.l_start = tswap64(target_fl->l_start); >>> fl.l_len = tswap64(target_fl->l_len); >>> @@ -9031,7 +9033,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >>> if (((CPUARMState *)cpu_env)->eabi) { >>> if (!lock_user_struct(VERIFY_WRITE, target_efl, arg3, 0)) >>> goto efault; >>> - target_efl->l_type = tswap16(fl.l_type); >>> + target_efl->l_type = host_to_target_bitmask( >>> + tswap16(fl.l_type), flock_tbl); >>> target_efl->l_whence = tswap16(fl.l_whence); >>> target_efl->l_start = tswap64(fl.l_start); >>> target_efl->l_len = tswap64(fl.l_len); >>> @@ -9042,7 +9045,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >>> { >>> if (!lock_user_struct(VERIFY_WRITE, target_fl, arg3, 0)) >>> goto efault; >>> - target_fl->l_type = tswap16(fl.l_type); >>> + target_fl->l_type = host_to_target_bitmask( >>> + tswap16(fl.l_type), flock_tbl); >>> target_fl->l_whence = tswap16(fl.l_whence); >>> target_fl->l_start = tswap64(fl.l_start); >>> target_fl->l_len = tswap64(fl.l_len); >>> @@ -9058,7 +9062,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >>> if (((CPUARMState *)cpu_env)->eabi) { >>> if (!lock_user_struct(VERIFY_READ, target_efl, arg3, 1)) >>> goto efault; >>> - fl.l_type = tswap16(target_efl->l_type); >>> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >>> + flock_tbl); >>> fl.l_whence = tswap16(target_efl->l_whence); >>> fl.l_start = tswap64(target_efl->l_start); >>> fl.l_len = tswap64(target_efl->l_len); >>> @@ -9069,7 +9074,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, >>> { >>> if (!lock_user_struct(VERIFY_READ, target_fl, arg3, 1)) >>> goto efault; >>> - fl.l_type = tswap16(target_fl->l_type); >>> + fl.l_type = target_to_host_bitmask(tswap16(target_fl->l_type), >>> + flock_tbl); >>> fl.l_whence = tswap16(target_fl->l_whence); >>> fl.l_start = tswap64(target_fl->l_start); >>> fl.l_len = tswap64(target_fl->l_len); >>> >> >> This patch looks good to me, except that script/checkpatch.pl complains >> about "DOS line ending" and "line over 80 characters". >> > > I did not get any script/checkpatch.pl complains, originally. > > Does my email client configuration is incorrect, then cause incorrect > mail format? I guess not. The related reason is below. > > - I copy your full reply mail contents to a new file (diff.patch). If you copy, you loose the special characters. I do a "Save as". > > - Remove all '> ' in vi editor (1,% s/^> //g) (so get the original > patch contents). > > - ./script/checkpatch.pl diff.patch, it has no any complains. If I run "file" on the saved file, I have: $ file orig.eml orig.eml: SMTP mail, ASCII text, with CRLF line terminators I can convert it with "tr": $ tr "\r" "\n" < orig.eml > new.eml $ file new.eml new.eml: SMTP mail, ASCII text $ ./scripts/checkpatch.pl new.eml total: 0 errors, 0 warnings, 54 lines checked new.eml has no obvious style problems and is ready for submission. Laurent ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 21:58 ` Laurent Vivier @ 2015-12-18 22:12 ` Chen Gang 2015-12-18 22:15 ` Laurent Vivier 0 siblings, 1 reply; 11+ messages in thread From: Chen Gang @ 2015-12-18 22:12 UTC (permalink / raw) To: Laurent Vivier, Chen Gang, riku.voipio Cc: Peter Maydell, qemu-devel, Richard Henderson On 12/19/15 05:58, Laurent Vivier wrote: > > Le 18/12/2015 22:40, Chen Gang a écrit : >> [...] >> I did not get any script/checkpatch.pl complains, originally. >> >> Does my email client configuration is incorrect, then cause incorrect >> mail format? I guess not. The related reason is below. >> >> - I copy your full reply mail contents to a new file (diff.patch). > > If you copy, you loose the special characters. I do a "Save as". > >> >> - Remove all '> ' in vi editor (1,% s/^> //g) (so get the original >> patch contents). >> >> - ./script/checkpatch.pl diff.patch, it has no any complains. > > If I run "file" on the saved file, I have: > > $ file orig.eml > orig.eml: SMTP mail, ASCII text, with CRLF line terminators > > I can convert it with "tr": > > $ tr "\r" "\n" < orig.eml > new.eml > > $ file new.eml > new.eml: SMTP mail, ASCII text > > $ ./scripts/checkpatch.pl new.eml > total: 0 errors, 0 warnings, 54 lines checked > > new.eml has no obvious style problems and is ready for submission. > > Laurent > OK, thank you very much. I shall config my email client again to notice about it. Thanks. -- Chen Gang Open, share, and attitude like air, water, and life which God blessed. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 22:12 ` Chen Gang @ 2015-12-18 22:15 ` Laurent Vivier 2015-12-18 22:31 ` Chen Gang 0 siblings, 1 reply; 11+ messages in thread From: Laurent Vivier @ 2015-12-18 22:15 UTC (permalink / raw) To: Chen Gang, Chen Gang, riku.voipio Cc: Peter Maydell, qemu-devel, Richard Henderson Le 18/12/2015 23:12, Chen Gang a écrit : > > On 12/19/15 05:58, Laurent Vivier wrote: >> >> Le 18/12/2015 22:40, Chen Gang a écrit : >>> > > [...] > >>> I did not get any script/checkpatch.pl complains, originally. >>> >>> Does my email client configuration is incorrect, then cause incorrect >>> mail format? I guess not. The related reason is below. >>> >>> - I copy your full reply mail contents to a new file (diff.patch). >> >> If you copy, you loose the special characters. I do a "Save as". >> >>> >>> - Remove all '> ' in vi editor (1,% s/^> //g) (so get the original >>> patch contents). >>> >>> - ./script/checkpatch.pl diff.patch, it has no any complains. >> >> If I run "file" on the saved file, I have: >> >> $ file orig.eml >> orig.eml: SMTP mail, ASCII text, with CRLF line terminators >> >> I can convert it with "tr": >> >> $ tr "\r" "\n" < orig.eml > new.eml >> >> $ file new.eml >> new.eml: SMTP mail, ASCII text >> >> $ ./scripts/checkpatch.pl new.eml >> total: 0 errors, 0 warnings, 54 lines checked >> >> new.eml has no obvious style problems and is ready for submission. >> >> Laurent >> > > OK, thank you very much. I shall config my email client again to notice > about it. You should not use your email client to send patches, you should use "git send-email": http://wiki.qemu.org/Contribute/SubmitAPatch Laurent ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl 2015-12-18 22:15 ` Laurent Vivier @ 2015-12-18 22:31 ` Chen Gang 0 siblings, 0 replies; 11+ messages in thread From: Chen Gang @ 2015-12-18 22:31 UTC (permalink / raw) To: Laurent Vivier, Chen Gang, riku.voipio Cc: Peter Maydell, qemu-devel, Richard Henderson On 12/19/15 06:15, Laurent Vivier wrote: > > Le 18/12/2015 23:12, Chen Gang a écrit : >> [...] >> >> OK, thank you very much. I shall config my email client again to notice >> about it. > > You should not use your email client to send patches, you should use > "git send-email": > > http://wiki.qemu.org/Contribute/SubmitAPatch > OK, thanks. -- Chen Gang Open, share, and attitude like air, water, and life which God blessed ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-12-21 2:52 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-12-18 6:26 [Qemu-devel] [PATCH] linux-user/syscall.c: Notice about lock bitmask translation for fcntl Chen Gang 2015-12-18 6:51 ` Chen Gang 2015-12-18 9:41 ` Laurent Vivier 2015-12-18 10:47 ` Chen Gang 2015-12-21 2:47 ` Chen Gang 2015-12-18 9:37 ` Laurent Vivier 2015-12-18 21:40 ` Chen Gang 2015-12-18 21:58 ` Laurent Vivier 2015-12-18 22:12 ` Chen Gang 2015-12-18 22:15 ` Laurent Vivier 2015-12-18 22:31 ` Chen Gang
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).