From 4b120c3702f542b8ecbd2d5423b0bed666ab0d17 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Fri, 3 Jul 2026 15:57:12 +0100 Subject: [PATCH] virtio-devices: Gate VIRTIO_NET_S_ANNOUNCE on feature acked Only set the VIRTIO_NET_S_ANNOUNCE status bit if the feature VIRTIO_NET_F_GUEST_ANNOUNCE was acknowledged. Signed-off-by: Rob Bradford --- virtio-devices/src/net.rs | 6 +++++- virtio-devices/src/vhost_user/net.rs | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/virtio-devices/src/net.rs b/virtio-devices/src/net.rs index 7fbb43807..0a2a8a6ce 100644 --- a/virtio-devices/src/net.rs +++ b/virtio-devices/src/net.rs @@ -766,7 +766,11 @@ impl Net { if self.common.feature_acked(VIRTIO_NET_F_STATUS.into()) { status |= VIRTIO_NET_S_LINK_UP as u16; - if self.announce.pending.load(Ordering::Acquire) { + if self + .common + .feature_acked(VIRTIO_NET_F_GUEST_ANNOUNCE.into()) + && self.announce.pending.load(Ordering::Acquire) + { status |= VIRTIO_NET_S_ANNOUNCE as u16; } } diff --git a/virtio-devices/src/vhost_user/net.rs b/virtio-devices/src/vhost_user/net.rs index 302dd5d2f..7076a33f8 100644 --- a/virtio-devices/src/vhost_user/net.rs +++ b/virtio-devices/src/vhost_user/net.rs @@ -272,7 +272,12 @@ impl Net { { status |= VIRTIO_NET_S_LINK_UP as u16; - if self.announce.pending.load(Ordering::Acquire) { + if self + .vu_common + .virtio_common + .feature_acked(VIRTIO_NET_F_GUEST_ANNOUNCE.into()) + && self.announce.pending.load(Ordering::Acquire) + { status |= VIRTIO_NET_S_ANNOUNCE as u16; } }