* [Qemu-devel] [PATCH] Add getsockopt for settable SOL_IPV6 options @ 2018-12-13 13:06 tom.deseyn 2018-12-13 13:37 ` [Qemu-devel] [PATCH v2] " tom.deseyn 2018-12-13 21:28 ` [Qemu-devel] [PATCH] " no-reply 0 siblings, 2 replies; 12+ messages in thread From: tom.deseyn @ 2018-12-13 13:06 UTC (permalink / raw) To: qemu-devel; +Cc: riku.voipio, laurent, Tom Deseyn From: Tom Deseyn <tom.deseyn@gmail.com> Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> --- 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.19.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2] Add getsockopt for settable SOL_IPV6 options 2018-12-13 13:06 [Qemu-devel] [PATCH] Add getsockopt for settable SOL_IPV6 options tom.deseyn @ 2018-12-13 13:37 ` tom.deseyn 2018-12-13 13:57 ` Laurent Vivier 2018-12-13 22:11 ` [Qemu-devel] [PATCH v2] " no-reply 2018-12-13 21:28 ` [Qemu-devel] [PATCH] " no-reply 1 sibling, 2 replies; 12+ messages in thread From: tom.deseyn @ 2018-12-13 13:37 UTC (permalink / raw) To: qemu-devel; +Cc: riku.voipio, laurent, Tom Deseyn From: Tom Deseyn <tom.deseyn@gmail.com> Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> --- linux-user/syscall.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 280137da8c..ad52cfbd54 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2352,6 +2352,44 @@ 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: + goto unimplemented; + } + break; default: unimplemented: gemu_log("getsockopt level=%d optname=%d not yet supported\n", -- 2.19.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2] Add getsockopt for settable SOL_IPV6 options 2018-12-13 13:37 ` [Qemu-devel] [PATCH v2] " tom.deseyn @ 2018-12-13 13:57 ` Laurent Vivier 2018-12-14 15:41 ` [Qemu-devel] [PATCH v3] " tom.deseyn 2018-12-13 22:11 ` [Qemu-devel] [PATCH v2] " no-reply 1 sibling, 1 reply; 12+ messages in thread From: Laurent Vivier @ 2018-12-13 13:57 UTC (permalink / raw) To: tom.deseyn, qemu-devel; +Cc: riku.voipio On 13/12/2018 14:37, tom.deseyn@gmail.com wrote: > From: Tom Deseyn <tom.deseyn@gmail.com> > > Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> > --- Please add here an history of the changes between the version 1 and 2: v2: ????? > linux-user/syscall.c | 38 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 280137da8c..ad52cfbd54 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -2352,6 +2352,44 @@ 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; > + } This way to compute the size of the result is good for SOL_IP, but not for SOL_IPV6, in kernel do_ip_getsockopt() we have: if (len < sizeof(int) && len > 0 && val >= 0 && val <= 255) { unsigned char ucval = (unsigned char)val; len = 1; if (put_user(len, optlen)) return -EFAULT; if (copy_to_user(optval, &ucval, 1)) return -EFAULT; } else { len = min_t(unsigned int, sizeof(int), len); if (put_user(len, optlen)) return -EFAULT; if (copy_to_user(optval, &val, len)) return -EFAULT; } Whereas in kernel do_ipv6_getsockopt(): default: return -ENOPROTOOPT; } len = min_t(unsigned int, sizeof(int), len); if (put_user(len, optlen)) return -EFAULT; if (copy_to_user(optval, &val, len)) return -EFAULT; return 0; So in QEMU for SOL_IPV6 to mimic this I think you should use something like: len = min(lv, sizeof(val)); if (put_user_u32(len, optlen) { return -TARGET_EFAULT; } target_addr = lock_user(VERIFY_WRITE, optval_addr, len, 0); tswap32s(&val); memcpy(target_addr, &val, len); unlock_user(target_addr, optval_addr, len); Thanks, Laurent ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3] Add getsockopt for settable SOL_IPV6 options 2018-12-13 13:57 ` Laurent Vivier @ 2018-12-14 15:41 ` tom.deseyn 2018-12-23 9:21 ` no-reply 2019-01-07 5:50 ` Tom Deseyn 0 siblings, 2 replies; 12+ messages in thread From: tom.deseyn @ 2018-12-14 15:41 UTC (permalink / raw) To: qemu-devel; +Cc: riku.voipio, laurent, Tom Deseyn From: Tom Deseyn <tom.deseyn@gmail.com> Thank you for reviewing Laurant. Sorry for missing history, I'm not used to sending patches via mail. I got an email about code style. For now, I'm sticking to the style that is used in the function. v2: default to unimplemented v3: match kernel behavior Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> --- linux-user/syscall.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 280137da8c..f103437f26 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2352,6 +2352,42 @@ 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: { + void* target_addr; + if (get_user_u32(len, optlen)) + return -TARGET_EFAULT; + if (len < 0) + return -TARGET_EINVAL; + lv = sizeof(val); + ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); + if (ret < 0) + return ret; + if (lv < len) + len = lv; + if (put_user_u32(len, optlen)) + return -TARGET_EFAULT; + target_addr = lock_user(VERIFY_WRITE, optval_addr, len, 0); + tswap32s((uint32_t*)&val); + memcpy(target_addr, &val, len); + unlock_user(target_addr, optval_addr, len); + break; + } + default: + goto unimplemented; + } + break; default: unimplemented: gemu_log("getsockopt level=%d optname=%d not yet supported\n", -- 2.19.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v3] Add getsockopt for settable SOL_IPV6 options 2018-12-14 15:41 ` [Qemu-devel] [PATCH v3] " tom.deseyn @ 2018-12-23 9:21 ` no-reply 2019-01-07 5:50 ` Tom Deseyn 1 sibling, 0 replies; 12+ messages in thread From: no-reply @ 2018-12-23 9:21 UTC (permalink / raw) To: tom.deseyn; +Cc: fam, qemu-devel, riku.voipio, laurent Patchew URL: https://patchew.org/QEMU/20181214154130.4069-1-tom.deseyn@gmail.com/ Hi, This series seems to have some coding style problems. See output below for more information: Message-id: 20181214154130.4069-1-tom.deseyn@gmail.com Type: series Subject: [Qemu-devel] [PATCH v3] Add getsockopt for settable SOL_IPV6 options === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' 3da3146 Add getsockopt for settable SOL_IPV6 options === OUTPUT BEGIN === Checking PATCH 1/1: Add getsockopt for settable SOL_IPV6 options... ERROR: "foo* bar" should be "foo *bar" #38: FILE: linux-user/syscall.c:2368: + void* target_addr; ERROR: braces {} are necessary for all arms of this statement #39: FILE: linux-user/syscall.c:2369: + if (get_user_u32(len, optlen)) [...] ERROR: braces {} are necessary for all arms of this statement #41: FILE: linux-user/syscall.c:2371: + if (len < 0) [...] ERROR: braces {} are necessary for all arms of this statement #45: FILE: linux-user/syscall.c:2375: + if (ret < 0) [...] ERROR: braces {} are necessary for all arms of this statement #47: FILE: linux-user/syscall.c:2377: + if (lv < len) [...] ERROR: braces {} are necessary for all arms of this statement #49: FILE: linux-user/syscall.c:2379: + if (put_user_u32(len, optlen)) [...] ERROR: "(foo*)" should be "(foo *)" #52: FILE: linux-user/syscall.c:2382: + tswap32s((uint32_t*)&val); total: 7 errors, 0 warnings, 42 lines checked Your patch 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/20181214154130.4069-1-tom.deseyn@gmail.com/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] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v3] Add getsockopt for settable SOL_IPV6 options 2018-12-14 15:41 ` [Qemu-devel] [PATCH v3] " tom.deseyn 2018-12-23 9:21 ` no-reply @ 2019-01-07 5:50 ` Tom Deseyn 2019-01-07 7:12 ` Laurent Vivier 1 sibling, 1 reply; 12+ messages in thread From: Tom Deseyn @ 2019-01-07 5:50 UTC (permalink / raw) To: qemu-devel; +Cc: riku.voipio, Laurent Vivier Hi Laurent, Can you please take a look at the updated patch? Should I add braces for code-style? Thanks, Tom On Fri, Dec 14, 2018 at 4:43 PM <tom.deseyn@gmail.com> wrote: > From: Tom Deseyn <tom.deseyn@gmail.com> > > Thank you for reviewing Laurant. > Sorry for missing history, I'm not used to sending patches via mail. > I got an email about code style. For now, I'm sticking to the style > that is used in the function. > > v2: default to unimplemented > v3: match kernel behavior > > Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> > --- > linux-user/syscall.c | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 280137da8c..f103437f26 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -2352,6 +2352,42 @@ 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: { > + void* target_addr; > + if (get_user_u32(len, optlen)) > + return -TARGET_EFAULT; > + if (len < 0) > + return -TARGET_EINVAL; > + lv = sizeof(val); > + ret = get_errno(getsockopt(sockfd, level, optname, &val, > &lv)); > + if (ret < 0) > + return ret; > + if (lv < len) > + len = lv; > + if (put_user_u32(len, optlen)) > + return -TARGET_EFAULT; > + target_addr = lock_user(VERIFY_WRITE, optval_addr, len, 0); > + tswap32s((uint32_t*)&val); > + memcpy(target_addr, &val, len); > + unlock_user(target_addr, optval_addr, len); > + break; > + } > + default: > + goto unimplemented; > + } > + break; > default: > unimplemented: > gemu_log("getsockopt level=%d optname=%d not yet supported\n", > -- > 2.19.2 > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v3] Add getsockopt for settable SOL_IPV6 options 2019-01-07 5:50 ` Tom Deseyn @ 2019-01-07 7:12 ` Laurent Vivier 2019-01-07 8:27 ` [Qemu-devel] [PATCH v4] " tom.deseyn 2019-01-07 9:24 ` [Qemu-devel] [PATCH v5] " tom.deseyn 0 siblings, 2 replies; 12+ messages in thread From: Laurent Vivier @ 2019-01-07 7:12 UTC (permalink / raw) To: Tom Deseyn, qemu-devel; +Cc: riku.voipio Le 07/01/2019 à 06:50, Tom Deseyn a écrit : > Hi Laurent, > > Can you please take a look at the updated patch? Should I add braces for > code-style? Yes, new code must follow code-style. Older is only updated when we modify it for something else. Thanks, Laurent ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v4] Add getsockopt for settable SOL_IPV6 options 2019-01-07 7:12 ` Laurent Vivier @ 2019-01-07 8:27 ` tom.deseyn 2019-01-07 9:14 ` no-reply 2019-01-07 9:24 ` [Qemu-devel] [PATCH v5] " tom.deseyn 1 sibling, 1 reply; 12+ messages in thread From: tom.deseyn @ 2019-01-07 8:27 UTC (permalink / raw) To: qemu-devel, laurent; +Cc: riku.voipio, Tom Deseyn From: Tom Deseyn <tom.deseyn@gmail.com> v2: default to unimplemented v3: match kernel behavior v4: braces code-style Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> --- linux-user/syscall.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 280137da8c..bbcc0e86c6 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2352,6 +2352,47 @@ 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: { + void* target_addr; + if (get_user_u32(len, optlen)) { + return -TARGET_EFAULT; + } + if (len < 0) { + return -TARGET_EINVAL; + } + lv = sizeof(val); + ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); + if (ret < 0) { + return ret; + } + if (lv < len) { + len = lv; + } + if (put_user_u32(len, optlen)) { + return -TARGET_EFAULT; + } + target_addr = lock_user(VERIFY_WRITE, optval_addr, len, 0); + tswap32s((uint32_t*)&val); + memcpy(target_addr, &val, len); + unlock_user(target_addr, optval_addr, len); + break; + } + default: + goto unimplemented; + } + break; default: unimplemented: gemu_log("getsockopt level=%d optname=%d not yet supported\n", -- 2.19.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v4] Add getsockopt for settable SOL_IPV6 options 2019-01-07 8:27 ` [Qemu-devel] [PATCH v4] " tom.deseyn @ 2019-01-07 9:14 ` no-reply 0 siblings, 0 replies; 12+ messages in thread From: no-reply @ 2019-01-07 9:14 UTC (permalink / raw) To: tom.deseyn; +Cc: fam, qemu-devel, laurent, riku.voipio Patchew URL: https://patchew.org/QEMU/20190107082751.6461-1-tom.deseyn@gmail.com/ Hi, This series seems to have some coding style problems. See output below for more information: Subject: [Qemu-devel] [PATCH v4] Add getsockopt for settable SOL_IPV6 options Message-id: 20190107082751.6461-1-tom.deseyn@gmail.com Type: series === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' 5c1b600 Add getsockopt for settable SOL_IPV6 options === OUTPUT BEGIN === Checking PATCH 1/1: Add getsockopt for settable SOL_IPV6 options... ERROR: "foo* bar" should be "foo *bar" #34: FILE: linux-user/syscall.c:2368: + void* target_addr; ERROR: "(foo*)" should be "(foo *)" #53: FILE: linux-user/syscall.c:2387: + tswap32s((uint32_t*)&val); total: 2 errors, 0 warnings, 47 lines checked Your patch 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/20190107082751.6461-1-tom.deseyn@gmail.com/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] 12+ messages in thread
* [Qemu-devel] [PATCH v5] Add getsockopt for settable SOL_IPV6 options 2019-01-07 7:12 ` Laurent Vivier 2019-01-07 8:27 ` [Qemu-devel] [PATCH v4] " tom.deseyn @ 2019-01-07 9:24 ` tom.deseyn 1 sibling, 0 replies; 12+ messages in thread From: tom.deseyn @ 2019-01-07 9:24 UTC (permalink / raw) To: qemu-devel, laurent; +Cc: riku.voipio, Tom Deseyn From: Tom Deseyn <tom.deseyn@gmail.com> v2: default to unimplemented v3: match kernel behavior v4: braces code-style v5: pointer code-style Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com> --- linux-user/syscall.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 280137da8c..a6f6e9c1f7 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2352,6 +2352,47 @@ 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: { + void *target_addr; + if (get_user_u32(len, optlen)) { + return -TARGET_EFAULT; + } + if (len < 0) { + return -TARGET_EINVAL; + } + lv = sizeof(val); + ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); + if (ret < 0) { + return ret; + } + if (lv < len) { + len = lv; + } + if (put_user_u32(len, optlen)) { + return -TARGET_EFAULT; + } + target_addr = lock_user(VERIFY_WRITE, optval_addr, len, 0); + tswap32s((uint32_t *)&val); + memcpy(target_addr, &val, len); + unlock_user(target_addr, optval_addr, len); + break; + } + default: + goto unimplemented; + } + break; default: unimplemented: gemu_log("getsockopt level=%d optname=%d not yet supported\n", -- 2.19.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2] Add getsockopt for settable SOL_IPV6 options 2018-12-13 13:37 ` [Qemu-devel] [PATCH v2] " tom.deseyn 2018-12-13 13:57 ` Laurent Vivier @ 2018-12-13 22:11 ` no-reply 1 sibling, 0 replies; 12+ messages in thread From: no-reply @ 2018-12-13 22:11 UTC (permalink / raw) To: tom.deseyn; +Cc: fam, qemu-devel, riku.voipio, laurent Patchew URL: https://patchew.org/QEMU/20181213133733.8110-1-tom.deseyn@gmail.com/ Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 20181213133733.8110-1-tom.deseyn@gmail.com Subject: [Qemu-devel] [PATCH v2] Add getsockopt for settable SOL_IPV6 options === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' c7f204a Add getsockopt for settable SOL_IPV6 options === OUTPUT BEGIN === Checking PATCH 1/1: Add getsockopt for settable SOL_IPV6 options... ERROR: braces {} are necessary for all arms of this statement #30: FILE: linux-user/syscall.c:2368: + if (get_user_u32(len, optlen)) [...] ERROR: braces {} are necessary for all arms of this statement #32: FILE: linux-user/syscall.c:2370: + if (len < 0) [...] ERROR: braces {} are necessary for all arms of this statement #36: FILE: linux-user/syscall.c:2374: + if (ret < 0) [...] ERROR: braces {} are necessary for all arms of this statement #44: FILE: linux-user/syscall.c:2382: + if (len > sizeof(int)) [...] total: 4 errors, 0 warnings, 44 lines checked Your patch 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/20181213133733.8110-1-tom.deseyn@gmail.com/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] 12+ messages in thread
* Re: [Qemu-devel] [PATCH] Add getsockopt for settable SOL_IPV6 options 2018-12-13 13:06 [Qemu-devel] [PATCH] Add getsockopt for settable SOL_IPV6 options tom.deseyn 2018-12-13 13:37 ` [Qemu-devel] [PATCH v2] " tom.deseyn @ 2018-12-13 21:28 ` no-reply 1 sibling, 0 replies; 12+ messages in thread From: no-reply @ 2018-12-13 21:28 UTC (permalink / raw) To: tom.deseyn; +Cc: fam, qemu-devel, riku.voipio, laurent Patchew URL: https://patchew.org/QEMU/20181213130611.7496-1-tom.deseyn@gmail.com/ Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 20181213130611.7496-1-tom.deseyn@gmail.com Subject: [Qemu-devel] [PATCH] Add getsockopt for settable SOL_IPV6 options === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu * [new tag] patchew/20181213210057.3676-1-quintela@redhat.com -> patchew/20181213210057.3676-1-quintela@redhat.com Switched to a new branch 'test' 851c863 Add getsockopt for settable SOL_IPV6 options === OUTPUT BEGIN === Checking PATCH 1/1: Add getsockopt for settable SOL_IPV6 options... ERROR: braces {} are necessary for all arms of this statement #30: FILE: linux-user/syscall.c:2368: + if (get_user_u32(len, optlen)) [...] ERROR: braces {} are necessary for all arms of this statement #32: FILE: linux-user/syscall.c:2370: + if (len < 0) [...] ERROR: braces {} are necessary for all arms of this statement #36: FILE: linux-user/syscall.c:2374: + if (ret < 0) [...] ERROR: braces {} are necessary for all arms of this statement #44: FILE: linux-user/syscall.c:2382: + if (len > sizeof(int)) [...] total: 4 errors, 0 warnings, 45 lines checked Your patch 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/20181213130611.7496-1-tom.deseyn@gmail.com/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] 12+ messages in thread
end of thread, other threads:[~2019-01-07 9:24 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-12-13 13:06 [Qemu-devel] [PATCH] Add getsockopt for settable SOL_IPV6 options tom.deseyn 2018-12-13 13:37 ` [Qemu-devel] [PATCH v2] " tom.deseyn 2018-12-13 13:57 ` Laurent Vivier 2018-12-14 15:41 ` [Qemu-devel] [PATCH v3] " tom.deseyn 2018-12-23 9:21 ` no-reply 2019-01-07 5:50 ` Tom Deseyn 2019-01-07 7:12 ` Laurent Vivier 2019-01-07 8:27 ` [Qemu-devel] [PATCH v4] " tom.deseyn 2019-01-07 9:14 ` no-reply 2019-01-07 9:24 ` [Qemu-devel] [PATCH v5] " tom.deseyn 2018-12-13 22:11 ` [Qemu-devel] [PATCH v2] " no-reply 2018-12-13 21:28 ` [Qemu-devel] [PATCH] " no-reply
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).