Message ID | 94d33849-d3c1-7468-72df-f87f897bafd2@sberdevices.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RFC,v2,1/3] vsock: return errors other than -ENOMEM to socket | expand |
On Thu, Mar 30, 2023 at 10:07:36AM +0300, Arseniy Krasnov wrote: >This adds conversion of VMCI specific error code to general -ENOMEM. It >is needed, because af_vsock.c passes error value returned from transport >to the user. > >Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >--- > net/vmw_vsock/vmci_transport.c | 19 ++++++++++++++++--- > 1 file changed, 16 insertions(+), 3 deletions(-) > >diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c >index 36eb16a40745..45de3e75597f 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) > { >+ int err; Please, use the same type returned by the function. >+ > 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( >@@ -1842,7 +1849,13 @@ static ssize_t vmci_transport_stream_enqueue( > struct msghdr *msg, > size_t len) > { >- return vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0); >+ int err; Ditto. >+ >+ err = vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0); >+ if (err < 0) >+ err = -ENOMEM; >+ >+ return err; > } @Vishnu: should we backport the change for vmci_transport_stream_enqueue() to stable branches? In this case I would split this patch and I would send the vmci_transport_stream_enqueue() change to the net branch including: Fixes: c43170b7e157 ("vsock: return errors other than -ENOMEM to socket") Thanks, Stefano
> On Mar 30, 2023, at 1:19 AM, Stefano Garzarella <sgarzare@redhat.com> wrote: > > !! External Email > > On Thu, Mar 30, 2023 at 10:07:36AM +0300, Arseniy Krasnov wrote: >> This adds conversion of VMCI specific error code to general -ENOMEM. It >> is needed, because af_vsock.c passes error value returned from transport >> to the user. >> >> Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >> --- >> net/vmw_vsock/vmci_transport.c | 19 ++++++++++++++++--- >> 1 file changed, 16 insertions(+), 3 deletions(-) >> >> diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c >> index 36eb16a40745..45de3e75597f 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) >> { >> + int err; > > Please, use the same type returned by the function. > >> + >> 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( >> @@ -1842,7 +1849,13 @@ static ssize_t vmci_transport_stream_enqueue( >> struct msghdr *msg, >> size_t len) >> { >> - return vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0); >> + int err; > > Ditto. > >> + >> + err = vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0); >> + if (err < 0) >> + err = -ENOMEM; >> + >> + return err; >> } > > @Vishnu: should we backport the change for > vmci_transport_stream_enqueue() to stable branches? > > In this case I would split this patch and I would send the > vmci_transport_stream_enqueue() change to the net branch including: > > Fixes: c43170b7e157 ("vsock: return errors other than -ENOMEM to socket") Yes, good point. It would be better to do it this way for correctness. Thanks, Vishnu > > Thanks, > Stefano > > > !! External Email: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender.
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c index 36eb16a40745..45de3e75597f 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) { + int 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( @@ -1842,7 +1849,13 @@ static ssize_t vmci_transport_stream_enqueue( struct msghdr *msg, size_t len) { - return vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0); + int err; + + err = vmci_qpair_enquev(vmci_trans(vsk)->qpair, msg, len, 0); + if (err < 0) + err = -ENOMEM; + + return err; } static s64 vmci_transport_stream_has_data(struct vsock_sock *vsk)
This adds conversion of VMCI specific error code to general -ENOMEM. It is needed, because af_vsock.c passes error value returned from transport to the user. Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> --- net/vmw_vsock/vmci_transport.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)