diff options
| author | Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org> | 2026-02-05 18:48:10 +0000 |
|---|---|---|
| committer | Ed Maste <emaste@FreeBSD.org> | 2026-02-05 18:49:09 +0000 |
| commit | 5379c4627782ebb2619f95a5784361c88472c8b5 (patch) | |
| tree | cf3de7c6aa489d20e30b09a73f7ba229a7e5c57f | |
| parent | b773da180e02c0c27de48dbba72f3fb7a64656da (diff) | |
bhyve/virtio: check negotiated_caps for indirect descriptor support
vq_getchain() erroneously checked vc_hv_caps for indirect descriptor
support when it encountered an indirect descriptor. vc_hv_caps is used
in feature negotiation to advertise what features our device emulation
supports, but we should really check what features we have negotiated
with the driver.
Reviewed by: corvink
Differential Revision: https://reviews.freebsd.org/D53465
| -rw-r--r-- | usr.sbin/bhyve/virtio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/usr.sbin/bhyve/virtio.c b/usr.sbin/bhyve/virtio.c index 304156bf7416..a5ccbb9983a0 100644 --- a/usr.sbin/bhyve/virtio.c +++ b/usr.sbin/bhyve/virtio.c @@ -331,7 +331,7 @@ vq_getchain(struct vqueue_info *vq, struct iovec *iov, int niov, if ((vdir->flags & VRING_DESC_F_INDIRECT) == 0) { _vq_record(i, vdir, ctx, iov, niov, &req); i++; - } else if ((vs->vs_vc->vc_hv_caps & + } else if ((vs->vs_negotiated_caps & VIRTIO_RING_F_INDIRECT_DESC) == 0) { EPRINTLN( "%s: descriptor has forbidden INDIRECT flag, " |
