qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
@ 2019-01-10  8:37 Laurent Vivier
  2019-01-10  8:37 ` [Qemu-devel] [PULL 1/2] Add getsockopt for settable SOL_IPV6 options Laurent Vivier
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Laurent Vivier @ 2019-01-10  8:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: Laurent Vivier, Riku Voipio

The following changes since commit 147923b1a901a0370f83a0f4c58ec1baffef22f0:

  Merge remote-tracking branch 'remotes/kraxel/tags/usb-20190108-pull-request' into staging (2019-01-08 16:07:32 +0000)

are available in the Git repository at:

  git://github.com/vivier/qemu.git tags/linux-user-for-4.0-pull-request

for you to fetch changes up to 2bd3f8998e1e7dcd9afc29fab252fb9936f9e956:

  linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0 (2019-01-10 09:36:41 +0100)

----------------------------------------------------------------
Minor linux-user update (2019-01-10)
Fixes LTP tests pwrite03 and pwrite03_64

----------------------------------------------------------------

Peter Maydell (1):
  linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0

Tom Deseyn (1):
  Add getsockopt for settable SOL_IPV6 options

 linux-user/syscall.c | 61 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 57 insertions(+), 4 deletions(-)

-- 
2.20.1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 1/2] Add getsockopt for settable SOL_IPV6 options
  2019-01-10  8:37 [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Laurent Vivier
@ 2019-01-10  8:37 ` Laurent Vivier
  2019-01-10  8:37 ` [Qemu-devel] [PULL 2/2] linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0 Laurent Vivier
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2019-01-10  8:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: Laurent Vivier, Riku Voipio, Tom Deseyn

From: Tom Deseyn <tom.deseyn@gmail.com>

Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com>
Message-Id: <20181213130611.7496-1-tom.deseyn@gmail.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 linux-user/syscall.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 280137da8c..29bac79b61 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -2352,6 +2352,45 @@ static abi_long do_getsockopt(int sockfd, int level, int optname,
             break;
         }
         break;
+    case SOL_IPV6:
+        switch (optname) {
+        case IPV6_MTU_DISCOVER:
+        case IPV6_MTU:
+        case IPV6_V6ONLY:
+        case IPV6_RECVPKTINFO:
+        case IPV6_UNICAST_HOPS:
+        case IPV6_MULTICAST_HOPS:
+        case IPV6_MULTICAST_LOOP:
+        case IPV6_RECVERR:
+        case IPV6_RECVHOPLIMIT:
+        case IPV6_2292HOPLIMIT:
+        case IPV6_CHECKSUM:
+            if (get_user_u32(len, optlen))
+                return -TARGET_EFAULT;
+            if (len < 0)
+                return -TARGET_EINVAL;
+            lv = sizeof(lv);
+            ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv));
+            if (ret < 0)
+                return ret;
+            if (len < sizeof(int) && len > 0 && val >= 0 && val < 255) {
+                len = 1;
+                if (put_user_u32(len, optlen)
+                    || put_user_u8(val, optval_addr))
+                    return -TARGET_EFAULT;
+            } else {
+                if (len > sizeof(int))
+                    len = sizeof(int);
+                if (put_user_u32(len, optlen)
+                    || put_user_u32(val, optval_addr))
+                    return -TARGET_EFAULT;
+            }
+            break;
+        default:
+            ret = -TARGET_ENOPROTOOPT;
+            break;
+        }
+        break;
     default:
     unimplemented:
         gemu_log("getsockopt level=%d optname=%d not yet supported\n",
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 2/2] linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0
  2019-01-10  8:37 [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Laurent Vivier
  2019-01-10  8:37 ` [Qemu-devel] [PULL 1/2] Add getsockopt for settable SOL_IPV6 options Laurent Vivier
@ 2019-01-10  8:37 ` Laurent Vivier
  2019-01-10 18:45 ` [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Peter Maydell
  2019-01-13 21:17 ` no-reply
  3 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2019-01-10  8:37 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Riku Voipio, Peter Maydell,
	Philippe Mathieu-Daudé

From: Peter Maydell <peter.maydell@linaro.org>

Linux returns success if pwrite64() or pread64() are called with a
zero length NULL buffer, but QEMU was returning -TARGET_EFAULT.

This is the same bug that we fixed in commit 58cfa6c2e6eb51b23cc9
for the write syscall, and long before that in 38d840e6790c29f59
for the read syscall.

Fixes: https://bugs.launchpad.net/qemu/+bug/1810433

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190108184900.9654-1-peter.maydell@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 linux-user/syscall.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 29bac79b61..d6605b8b50 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -9716,8 +9716,15 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             arg4 = arg5;
             arg5 = arg6;
         }
-        if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
-            return -TARGET_EFAULT;
+        if (arg2 == 0 && arg3 == 0) {
+            /* Special-case NULL buffer and zero length, which should succeed */
+            p = 0;
+        } else {
+            p = lock_user(VERIFY_WRITE, arg2, arg3, 0);
+            if (!p) {
+                return -TARGET_EFAULT;
+            }
+        }
         ret = get_errno(pread64(arg1, p, arg3, target_offset64(arg4, arg5)));
         unlock_user(p, arg2, ret);
         return ret;
@@ -9726,8 +9733,15 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
             arg4 = arg5;
             arg5 = arg6;
         }
-        if (!(p = lock_user(VERIFY_READ, arg2, arg3, 1)))
-            return -TARGET_EFAULT;
+        if (arg2 == 0 && arg3 == 0) {
+            /* Special-case NULL buffer and zero length, which should succeed */
+            p = 0;
+        } else {
+            p = lock_user(VERIFY_READ, arg2, arg3, 1);
+            if (!p) {
+                return -TARGET_EFAULT;
+            }
+        }
         ret = get_errno(pwrite64(arg1, p, arg3, target_offset64(arg4, arg5)));
         unlock_user(p, arg2, 0);
         return ret;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
  2019-01-10  8:37 [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Laurent Vivier
  2019-01-10  8:37 ` [Qemu-devel] [PULL 1/2] Add getsockopt for settable SOL_IPV6 options Laurent Vivier
  2019-01-10  8:37 ` [Qemu-devel] [PULL 2/2] linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0 Laurent Vivier
@ 2019-01-10 18:45 ` Peter Maydell
  2019-01-13 21:17 ` no-reply
  3 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2019-01-10 18:45 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: QEMU Developers, Riku Voipio

On Thu, 10 Jan 2019 at 09:01, Laurent Vivier <laurent@vivier.eu> wrote:
>
> The following changes since commit 147923b1a901a0370f83a0f4c58ec1baffef22f0:
>
>   Merge remote-tracking branch 'remotes/kraxel/tags/usb-20190108-pull-request' into staging (2019-01-08 16:07:32 +0000)
>
> are available in the Git repository at:
>
>   git://github.com/vivier/qemu.git tags/linux-user-for-4.0-pull-request
>
> for you to fetch changes up to 2bd3f8998e1e7dcd9afc29fab252fb9936f9e956:
>
>   linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0 (2019-01-10 09:36:41 +0100)
>
> ----------------------------------------------------------------
> Minor linux-user update (2019-01-10)
> Fixes LTP tests pwrite03 and pwrite03_64
>
> ----------------------------------------------------------------
>
> Peter Maydell (1):
>   linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0
>
> Tom Deseyn (1):
>   Add getsockopt for settable SOL_IPV6 options
>
>  linux-user/syscall.c | 61 +++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 57 insertions(+), 4 deletions(-)

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0
for any user-visible changes.

-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
  2019-01-10  8:37 [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Laurent Vivier
                   ` (2 preceding siblings ...)
  2019-01-10 18:45 ` [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Peter Maydell
@ 2019-01-13 21:17 ` no-reply
  3 siblings, 0 replies; 9+ messages in thread
From: no-reply @ 2019-01-13 21:17 UTC (permalink / raw)
  To: laurent; +Cc: fam, qemu-devel, riku.voipio

Patchew URL: https://patchew.org/QEMU/20190110083737.5036-1-laurent@vivier.eu/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20190110083737.5036-1-laurent@vivier.eu
Subject: [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

From https://github.com/patchew-project/qemu
 * [new tag]         patchew/20190110083737.5036-1-laurent@vivier.eu -> patchew/20190110083737.5036-1-laurent@vivier.eu
Switched to a new branch 'test'
47841e1 Add getsockopt for settable SOL_IPV6 options

=== OUTPUT BEGIN ===
ERROR: braces {} are necessary for all arms of this statement
#35: FILE: linux-user/syscall.c:2407:
+            if (get_user_u32(len, optlen))
[...]

ERROR: braces {} are necessary for all arms of this statement
#37: FILE: linux-user/syscall.c:2409:
+            if (len < 0)
[...]

ERROR: braces {} are necessary for all arms of this statement
#41: FILE: linux-user/syscall.c:2413:
+            if (ret < 0)
[...]

ERROR: braces {} are necessary for all arms of this statement
#49: FILE: linux-user/syscall.c:2421:
+                if (len > sizeof(int))
[...]

total: 4 errors, 0 warnings, 45 lines checked

Commit 47841e11e8dd (Add getsockopt for settable SOL_IPV6 options) has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20190110083737.5036-1-laurent@vivier.eu/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
@ 2019-04-08 19:37 Laurent Vivier
  2019-04-08 19:37 ` Laurent Vivier
  2019-04-09 11:58 ` Peter Maydell
  0 siblings, 2 replies; 9+ messages in thread
From: Laurent Vivier @ 2019-04-08 19:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: Laurent Vivier, Riku Voipio

The following changes since commit f55a585d1037e5de6088f25e75443c2776786e29:

  Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (2019-04-07 14:54:55 +0100)

are available in the Git repository at:

  git://github.com/vivier/qemu.git tags/linux-user-for-4.0-pull-request

for you to fetch changes up to 71ba74f67eaca21b0cc9d96f534ad3b9a7161400:

  linux-user: rename gettid() to sys_gettid() to avoid clash with glibc (2019-04-08 17:27:13 +0200)

----------------------------------------------------------------
fix gettid() clash with new glibc

----------------------------------------------------------------

Daniel P. Berrangé (2):
  linux-user: assume __NR_gettid always exists
  linux-user: rename gettid() to sys_gettid() to avoid clash with glibc

 linux-user/syscall.c | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

-- 
2.20.1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
  2019-04-08 19:37 Laurent Vivier
@ 2019-04-08 19:37 ` Laurent Vivier
  2019-04-09 11:58 ` Peter Maydell
  1 sibling, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2019-04-08 19:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: Riku Voipio, Laurent Vivier

The following changes since commit f55a585d1037e5de6088f25e75443c2776786e29:

  Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (2019-04-07 14:54:55 +0100)

are available in the Git repository at:

  git://github.com/vivier/qemu.git tags/linux-user-for-4.0-pull-request

for you to fetch changes up to 71ba74f67eaca21b0cc9d96f534ad3b9a7161400:

  linux-user: rename gettid() to sys_gettid() to avoid clash with glibc (2019-04-08 17:27:13 +0200)

----------------------------------------------------------------
fix gettid() clash with new glibc

----------------------------------------------------------------

Daniel P. Berrangé (2):
  linux-user: assume __NR_gettid always exists
  linux-user: rename gettid() to sys_gettid() to avoid clash with glibc

 linux-user/syscall.c | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

-- 
2.20.1



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
  2019-04-08 19:37 Laurent Vivier
  2019-04-08 19:37 ` Laurent Vivier
@ 2019-04-09 11:58 ` Peter Maydell
  2019-04-09 11:58   ` Peter Maydell
  1 sibling, 1 reply; 9+ messages in thread
From: Peter Maydell @ 2019-04-09 11:58 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: QEMU Developers, Riku Voipio

On Mon, 8 Apr 2019 at 20:38, Laurent Vivier <laurent@vivier.eu> wrote:
>
> The following changes since commit f55a585d1037e5de6088f25e75443c2776786e29:
>
>   Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (2019-04-07 14:54:55 +0100)
>
> are available in the Git repository at:
>
>   git://github.com/vivier/qemu.git tags/linux-user-for-4.0-pull-request
>
> for you to fetch changes up to 71ba74f67eaca21b0cc9d96f534ad3b9a7161400:
>
>   linux-user: rename gettid() to sys_gettid() to avoid clash with glibc (2019-04-08 17:27:13 +0200)
>
> ----------------------------------------------------------------
> fix gettid() clash with new glibc
>
> ----------------------------------------------------------------
>
> Daniel P. Berrangé (2):
>   linux-user: assume __NR_gettid always exists
>   linux-user: rename gettid() to sys_gettid() to avoid clash with glibc
>
>  linux-user/syscall.c | 19 ++++++-------------
>  1 file changed, 6 insertions(+), 13 deletions(-)

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0
for any user-visible changes.

-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches
  2019-04-09 11:58 ` Peter Maydell
@ 2019-04-09 11:58   ` Peter Maydell
  0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2019-04-09 11:58 UTC (permalink / raw)
  To: Laurent Vivier; +Cc: Riku Voipio, QEMU Developers

On Mon, 8 Apr 2019 at 20:38, Laurent Vivier <laurent@vivier.eu> wrote:
>
> The following changes since commit f55a585d1037e5de6088f25e75443c2776786e29:
>
>   Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (2019-04-07 14:54:55 +0100)
>
> are available in the Git repository at:
>
>   git://github.com/vivier/qemu.git tags/linux-user-for-4.0-pull-request
>
> for you to fetch changes up to 71ba74f67eaca21b0cc9d96f534ad3b9a7161400:
>
>   linux-user: rename gettid() to sys_gettid() to avoid clash with glibc (2019-04-08 17:27:13 +0200)
>
> ----------------------------------------------------------------
> fix gettid() clash with new glibc
>
> ----------------------------------------------------------------
>
> Daniel P. Berrangé (2):
>   linux-user: assume __NR_gettid always exists
>   linux-user: rename gettid() to sys_gettid() to avoid clash with glibc
>
>  linux-user/syscall.c | 19 ++++++-------------
>  1 file changed, 6 insertions(+), 13 deletions(-)

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0
for any user-visible changes.

-- PMM


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-04-09 11:59 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-10  8:37 [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Laurent Vivier
2019-01-10  8:37 ` [Qemu-devel] [PULL 1/2] Add getsockopt for settable SOL_IPV6 options Laurent Vivier
2019-01-10  8:37 ` [Qemu-devel] [PULL 2/2] linux-user: make pwrite64/pread64(fd, NULL, 0, offset) return 0 Laurent Vivier
2019-01-10 18:45 ` [Qemu-devel] [PULL 0/2] Linux user for 4.0 patches Peter Maydell
2019-01-13 21:17 ` no-reply
  -- strict thread matches above, loose matches on Subject: below --
2019-04-08 19:37 Laurent Vivier
2019-04-08 19:37 ` Laurent Vivier
2019-04-09 11:58 ` Peter Maydell
2019-04-09 11:58   ` Peter Maydell

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).