Thread (4 messages) 4 messages, 3 authors, 2020-12-28

Re: [PATCH net v5 1/2] vhost_net: fix ubuf refcount incorrectly when sendmsg fails

From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Date: 2020-12-27 16:16:13
Also in: virtualization

On Sun, Dec 27, 2020 at 6:26 AM Michael S. Tsirkin [off-list ref] wrote:
On Fri, Dec 25, 2020 at 03:24:25PM +0800, wangyunjian wrote:
quoted
From: Yunjian Wang <redacted>

Currently the vhost_zerocopy_callback() maybe be called to decrease
the refcount when sendmsg fails in tun. The error handling in vhost
handle_tx_zerocopy() will try to decrease the same refcount again.
This is wrong. To fix this issue, we only call vhost_net_ubuf_put()
when vq->heads[nvq->desc].len == VHOST_DMA_IN_PROGRESS.

Fixes: 0690899b4d45 ("tun: experimental zero copy tx support")
Are you sure about this tag? the patch in question only affects
tun, while the fix only affects vhost.
That was my suggestion. But you're right. Perhaps better:

Fixes: bab632d69ee4 ("vhost: vhost TX zero-copy support")

That introduces the actual block that releases the buffer on error:

"
                err = sock->ops->sendmsg(NULL, sock, &msg, len);
                if (unlikely(err < 0)) {
+                       if (zcopy) {
+                               if (ubufs)
+                                       vhost_ubuf_put(ubufs);
+                               vq->upend_idx = ((unsigned)vq->upend_idx - 1) %
+                                       UIO_MAXIOV;
+                       }
"
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help