mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket
@ 2023-04-03 11:23 Arseniy Krasnov
  2023-04-03 11:24 ` [PATCH net-next v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Arseniy Krasnov @ 2023-04-03 11:23 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] 5+ messages in thread

* [PATCH net-next v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive
  2023-04-03 11:23 [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
@ 2023-04-03 11:24 ` Arseniy Krasnov
  2023-04-03 11:25 ` [PATCH net-next v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Arseniy Krasnov @ 2023-04-03 11:24 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>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.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	[flat|nested] 5+ messages in thread

* [PATCH net-next v4 2/3] vsock: return errors other than -ENOMEM to socket
  2023-04-03 11:23 [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
  2023-04-03 11:24 ` [PATCH net-next v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
@ 2023-04-03 11:25 ` Arseniy Krasnov
  2023-04-03 11:26 ` [PATCH net-next v4 3/3] vsock/test: update expected return values Arseniy Krasnov
  2023-04-04 11:50 ` [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Arseniy Krasnov @ 2023-04-03 11:25 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>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
---
 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	[flat|nested] 5+ messages in thread

* [PATCH net-next v4 3/3] vsock/test: update expected return values
  2023-04-03 11:23 [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
  2023-04-03 11:24 ` [PATCH net-next v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
  2023-04-03 11:25 ` [PATCH net-next v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
@ 2023-04-03 11:26 ` Arseniy Krasnov
  2023-04-04 11:50 ` [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Arseniy Krasnov @ 2023-04-03 11:26 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	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket
  2023-04-03 11:23 [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
                   ` (2 preceding siblings ...)
  2023-04-03 11:26 ` [PATCH net-next v4 3/3] vsock/test: update expected return values Arseniy Krasnov
@ 2023-04-04 11:50 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-04-04 11:50 UTC (permalink / raw)
  To: Arseniy Krasnov
  Cc: stefanha, sgarzare, davem, edumazet, kuba, pabeni,
	bobby.eshleman, bryantan, vdasa, kvm, virtualization, netdev,
	linux-kernel, kernel, oxffffaa, avkrasnov, pv-drivers

Hello:

This series was applied to netdev/net-next.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Mon, 3 Apr 2023 14:23:00 +0300 you wrote:
> 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.
> 
> [...]

Here is the summary with links:
  - [net-next,v4,1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive
    https://git.kernel.org/netdev/net-next/c/f59f3006ca7b
  - [net-next,v4,2/3] vsock: return errors other than -ENOMEM to socket
    https://git.kernel.org/netdev/net-next/c/02ab696febab
  - [net-next,v4,3/3] vsock/test: update expected return values
    https://git.kernel.org/netdev/net-next/c/b5d54eb5899a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2023-04-04 11:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-03 11:23 [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-03 11:24 ` [PATCH net-next v4 1/3] vsock/vmci: convert VMCI error code to -ENOMEM on receive Arseniy Krasnov
2023-04-03 11:25 ` [PATCH net-next v4 2/3] vsock: return errors other than -ENOMEM to socket Arseniy Krasnov
2023-04-03 11:26 ` [PATCH net-next v4 3/3] vsock/test: update expected return values Arseniy Krasnov
2023-04-04 11:50 ` [PATCH net-next v4 0/3] vsock: return errors other than -ENOMEM to socket patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®