* [RFC PATCH v4 0/3] vsock: return errors other than -ENOMEM to socket
@ 2023-04-02 18:14 Arseniy Krasnov
2023-04-02 18:15 ` [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Arseniy Krasnov @ 2023-04-02 18:14 UTC (permalink / raw)
To: Stefan Hajnoczi, Stefano Garzarella, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Bobby Eshleman,
Bryan Tan, Vishnu Dasa
Cc: kvm, virtualization, netdev, linux-kernel, kernel, oxffffaa,
avkrasnov, pv-drivers
Hello,
this patchset removes behaviour, where error code returned from any
transport was always switched to ENOMEM. This works in the same way as
patch from Bobby Eshleman:
commit c43170b7e157 ("vsock: return errors other than -ENOMEM to socket"),
but for receive calls. VMCI transport is also updated (both tx and rx
SOCK_STREAM callbacks), because it returns VMCI specific error code to
af_vsock.c (like VMCI_ERROR_*). Tx path is already merged to net, so it
was excluded from patchset in v4. At the same time, virtio and Hyper-V
transports are using general error codes, so there is no need to update
them.
vsock_test suite is also updated.
Link to v1:
https://lore.kernel.org/netdev/97f19214-ba04-c47e-7486-72e8aa16c690@sberdevices.ru/
Link to v2:
https://lore.kernel.org/netdev/60abc0da-0412-6e25-eeb0-8e32e3ec21e7@sberdevices.ru/
Link to v3:
https://lore.kernel.org/netdev/dead4842-333a-015e-028b-302151336ff9@sberdevices.ru/
Changelog:
v1 -> v2:
- Add patch for VMCI as Vishnu Dasa suggested.
v2 -> v3:
- Change type of 'err' var in VMCI patches from 'int' to 'ssize_t'.
- Split VMCI patch to two patches: for send and for receive cases.
- Reorder patches: move VMCI before af_vsock.c.
v3 -> v4:
- Exclude VMCI patch for send from patchset (merged to 'net').
- Update commit message of VMCI patch for receive.
Arseniy Krasnov (3):
vsock/vmci: convert VMCI error code to -ENOMEM on receive
vsock: return errors other than -ENOMEM to socket
vsock/test: update expected return values
net/vmw_vsock/af_vsock.c | 4 ++--
net/vmw_vsock/vmci_transport.c | 11 +++++++++--
tools/testing/vsock/vsock_test.c | 4 ++--
3 files changed, 13 insertions(+), 6 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive
2023-04-02 18:14 [RFC PATCH v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
@ 2023-04-02 18:15 ` Arseniy Krasnov
2023-04-03 11:14 ` Stefano Garzarella
2023-04-02 18:16 ` [RFC PATCH v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-02 18:17 ` [RFC PATCH v4 3/3] vsock/test: update expected return values Arseniy Krasnov
2 siblings, 1 reply; 6+ messages in thread
From: Arseniy Krasnov @ 2023-04-02 18:15 UTC (permalink / raw)
To: Stefan Hajnoczi, Stefano Garzarella, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Bobby Eshleman,
Bryan Tan, Vishnu Dasa
Cc: kvm, virtualization, netdev, linux-kernel, kernel, oxffffaa,
avkrasnov, pv-drivers
This adds conversion of VMCI specific error code to general -ENOMEM. It
is preparation for the next patch, which changes af_vsock.c behaviour
on receive to pass value returned from transport to the user.
Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
---
net/vmw_vsock/vmci_transport.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
index 36eb16a40745..a5375c97f5b0 100644
--- a/net/vmw_vsock/vmci_transport.c
+++ b/net/vmw_vsock/vmci_transport.c
@@ -1831,10 +1831,17 @@ static ssize_t vmci_transport_stream_dequeue(
size_t len,
int flags)
{
+ ssize_t err;
+
if (flags & MSG_PEEK)
- return vmci_qpair_peekv(vmci_trans(vsk)->qpair, msg, len, 0);
+ err = vmci_qpair_peekv(vmci_trans(vsk)->qpair, msg, len, 0);
else
- return vmci_qpair_dequev(vmci_trans(vsk)->qpair, msg, len, 0);
+ err = vmci_qpair_dequev(vmci_trans(vsk)->qpair, msg, len, 0);
+
+ if (err < 0)
+ err = -ENOMEM;
+
+ return err;
}
static ssize_t vmci_transport_stream_enqueue(
--
2.25.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [RFC PATCH v4 2/3] vsock: return errors other than -ENOMEM to socket
2023-04-02 18:14 [RFC PATCH v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-02 18:15 ` [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
@ 2023-04-02 18:16 ` Arseniy Krasnov
2023-04-03 11:15 ` Stefano Garzarella
2023-04-02 18:17 ` [RFC PATCH v4 3/3] vsock/test: update expected return values Arseniy Krasnov
2 siblings, 1 reply; 6+ messages in thread
From: Arseniy Krasnov @ 2023-04-02 18:16 UTC (permalink / raw)
To: Stefan Hajnoczi, Stefano Garzarella, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Bobby Eshleman,
Bryan Tan, Vishnu Dasa
Cc: kvm, virtualization, netdev, linux-kernel, kernel, oxffffaa,
avkrasnov, pv-drivers
This removes behaviour, where error code returned from any transport
was always switched to ENOMEM. This works in the same way as:
commit
c43170b7e157 ("vsock: return errors other than -ENOMEM to socket"),
but for receive calls.
Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
---
net/vmw_vsock/af_vsock.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 5f2dda35c980..413407bb646c 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -2043,7 +2043,7 @@ static int __vsock_stream_recvmsg(struct sock *sk, struct msghdr *msg,
read = transport->stream_dequeue(vsk, msg, len - copied, flags);
if (read < 0) {
- err = -ENOMEM;
+ err = read;
break;
}
@@ -2094,7 +2094,7 @@ static int __vsock_seqpacket_recvmsg(struct sock *sk, struct msghdr *msg,
msg_len = transport->seqpacket_dequeue(vsk, msg, flags);
if (msg_len < 0) {
- err = -ENOMEM;
+ err = msg_len;
goto out;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [RFC PATCH v4 3/3] vsock/test: update expected return values
2023-04-02 18:14 [RFC PATCH v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-02 18:15 ` [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
2023-04-02 18:16 ` [RFC PATCH v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
@ 2023-04-02 18:17 ` Arseniy Krasnov
2 siblings, 0 replies; 6+ messages in thread
From: Arseniy Krasnov @ 2023-04-02 18:17 UTC (permalink / raw)
To: Stefan Hajnoczi, Stefano Garzarella, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Bobby Eshleman,
Bryan Tan, Vishnu Dasa
Cc: kvm, virtualization, netdev, linux-kernel, kernel, oxffffaa,
avkrasnov, pv-drivers
This updates expected return values for invalid buffer test. Now such
values are returned from transport, not from af_vsock.c.
Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
---
tools/testing/vsock/vsock_test.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c
index 3de10dbb50f5..a91d0ef963be 100644
--- a/tools/testing/vsock/vsock_test.c
+++ b/tools/testing/vsock/vsock_test.c
@@ -723,7 +723,7 @@ static void test_seqpacket_invalid_rec_buffer_server(const struct test_opts *opt
exit(EXIT_FAILURE);
}
- if (errno != ENOMEM) {
+ if (errno != EFAULT) {
perror("unexpected errno of 'broken_buf'");
exit(EXIT_FAILURE);
}
@@ -887,7 +887,7 @@ static void test_inv_buf_client(const struct test_opts *opts, bool stream)
exit(EXIT_FAILURE);
}
- if (errno != ENOMEM) {
+ if (errno != EFAULT) {
fprintf(stderr, "unexpected recv(2) errno %d\n", errno);
exit(EXIT_FAILURE);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive
2023-04-02 18:15 ` [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
@ 2023-04-03 11:14 ` Stefano Garzarella
0 siblings, 0 replies; 6+ messages in thread
From: Stefano Garzarella @ 2023-04-03 11:14 UTC (permalink / raw)
To: Arseniy Krasnov
Cc: Stefan Hajnoczi, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Bobby Eshleman, Bryan Tan, Vishnu Dasa, kvm,
virtualization, netdev, linux-kernel, kernel, oxffffaa,
pv-drivers
On Sun, Apr 02, 2023 at 09:15:49PM +0300, Arseniy Krasnov wrote:
>This adds conversion of VMCI specific error code to general -ENOMEM. It
>is preparation for the next patch, which changes af_vsock.c behaviour
>on receive to pass value returned from transport to the user.
>
>Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
>Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
>---
> net/vmw_vsock/vmci_transport.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
LGTM!
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
>
>diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
>index 36eb16a40745..a5375c97f5b0 100644
>--- a/net/vmw_vsock/vmci_transport.c
>+++ b/net/vmw_vsock/vmci_transport.c
>@@ -1831,10 +1831,17 @@ static ssize_t vmci_transport_stream_dequeue(
> size_t len,
> int flags)
> {
>+ ssize_t err;
>+
> if (flags & MSG_PEEK)
>- return vmci_qpair_peekv(vmci_trans(vsk)->qpair, msg, len, 0);
>+ err = vmci_qpair_peekv(vmci_trans(vsk)->qpair, msg, len, 0);
> else
>- return vmci_qpair_dequev(vmci_trans(vsk)->qpair, msg, len, 0);
>+ err = vmci_qpair_dequev(vmci_trans(vsk)->qpair, msg, len, 0);
>+
>+ if (err < 0)
>+ err = -ENOMEM;
>+
>+ return err;
> }
>
> static ssize_t vmci_transport_stream_enqueue(
>--
>2.25.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFC PATCH v4 2/3] vsock: return errors other than -ENOMEM to socket
2023-04-02 18:16 ` [RFC PATCH v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
@ 2023-04-03 11:15 ` Stefano Garzarella
0 siblings, 0 replies; 6+ messages in thread
From: Stefano Garzarella @ 2023-04-03 11:15 UTC (permalink / raw)
To: Arseniy Krasnov
Cc: Stefan Hajnoczi, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Bobby Eshleman, Bryan Tan, Vishnu Dasa, kvm,
virtualization, netdev, linux-kernel, kernel, oxffffaa,
pv-drivers
On Sun, Apr 02, 2023 at 09:16:46PM +0300, Arseniy Krasnov wrote:
>This removes behaviour, where error code returned from any transport
>was always switched to ENOMEM. This works in the same way as:
>commit
>c43170b7e157 ("vsock: return errors other than -ENOMEM to socket"),
>but for receive calls.
>
>Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
>---
> net/vmw_vsock/af_vsock.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
LGTM!
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
>
>diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
>index 5f2dda35c980..413407bb646c 100644
>--- a/net/vmw_vsock/af_vsock.c
>+++ b/net/vmw_vsock/af_vsock.c
>@@ -2043,7 +2043,7 @@ static int __vsock_stream_recvmsg(struct sock *sk, struct msghdr *msg,
>
> read = transport->stream_dequeue(vsk, msg, len - copied, flags);
> if (read < 0) {
>- err = -ENOMEM;
>+ err = read;
> break;
> }
>
>@@ -2094,7 +2094,7 @@ static int __vsock_seqpacket_recvmsg(struct sock *sk, struct msghdr *msg,
> msg_len = transport->seqpacket_dequeue(vsk, msg, flags);
>
> if (msg_len < 0) {
>- err = -ENOMEM;
>+ err = msg_len;
> goto out;
> }
>
>--
>2.25.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-04-03 11:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-02 18:14 [RFC PATCH v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-02 18:15 ` [RFC PATCH v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
2023-04-03 11:14 ` Stefano Garzarella
2023-04-02 18:16 ` [RFC PATCH v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-03 11:15 ` Stefano Garzarella
2023-04-02 18:17 ` [RFC PATCH v4 3/3] vsock/test: update expected return values Arseniy Krasnov
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).