@@ -236,8 +236,9 @@ static int get_rx_bufs(struct vhost_virtqueue *vq,
int seg = 0;
int headcount = 0;
unsigned d;
- int r;
+ int r, nlogs;
+ nlogs = 0;
while (datalen > 0) {
if (unlikely(headcount >= VHOST_NET_MAX_SG)) {
r = -ENOBUFS;
@@ -245,7 +246,8 @@ static int get_rx_bufs(struct vhost_virtqueue *vq,
}
d = vhost_get_desc(vq->dev, vq, vq->iov + seg,
ARRAY_SIZE(vq->iov) - seg, &out,
- &in, log, log_num);
+ &in, log+nlogs, log_num);
+ nlogs += log ? *log_num : 0;
if (d == vq->num) {
r = 0;
goto err;
@@ -263,6 +265,8 @@ static int get_rx_bufs(struct vhost_virtqueue *vq,
seg += in;
}
*iovcount = seg;
+ if (unlikely(log))
+ *log_num = nlogs;
return headcount;
err:
vhost_discard_desc(vq, headcount);
This patch fixes the multibuffer case of logging with mergeable buffers. Signed-off-by: David L Stevens <dlstevens@us.ibm.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html