diff --git a/lib/include/openamp/virtio.h b/lib/include/openamp/virtio.h index c4d4927b..278d2da7 100644 --- a/lib/include/openamp/virtio.h +++ b/lib/include/openamp/virtio.h @@ -468,13 +468,15 @@ static inline int virtio_negotiate_features(struct virtio_device *vdev, uint32_t features, uint32_t *final_features) { - if (!vdev || !final_features) + if (!vdev) return -EINVAL; if (!vdev->func || !vdev->func->negotiate_features) return -ENXIO; - *final_features = vdev->func->negotiate_features(vdev, features); + vdev->features = vdev->func->negotiate_features(vdev, features); + if (final_features) + *final_features = vdev->features; return 0; }