• Si-Wei Liu's avatar
    vdpa/mlx5: should verify CTRL_VQ feature exists for MQ · 30c22f38
    Si-Wei Liu authored
    Per VIRTIO v1.1 specification, section 5.1.3.1 Feature bit requirements:
    "VIRTIO_NET_F_MQ Requires VIRTIO_NET_F_CTRL_VQ".
    
    There's assumption in the mlx5_vdpa multiqueue code that MQ must come
    together with CTRL_VQ. However, there's nowhere in the upper layer to
    guarantee this assumption would hold. Were there an untrusted driver
    sending down MQ without CTRL_VQ, it would compromise various spots for
    e.g. is_index_valid() and is_ctrl_vq_idx(). Although this doesn't end
    up with immediate panic or security loophole as of today's code, the
    chance for this to be taken advantage of due to future code change is
    not zero.
    
    Harden the crispy assumption by failing the set_driver_features() call
    when seeing (MQ && !CTRL_VQ). For that end, verify_min_features() is
    renamed to verify_driver_features() to reflect the fact that it now does
    more than just validate the minimum features. verify_driver_features()
    is now used to accommodate various checks against the driver features
    for set_driver_features().
    Signed-off-by: default avatarSi-Wei Liu <si-wei.liu@oracle.com>
    Link: https://lore.kernel.org/r/1642206481-30721-3-git-send-email-si-wei.liu@oracle.comSigned-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Reviewed-by: default avatarEli Cohen <elic@nvidia.com>
    Acked-by: default avatarJason Wang <jasowang@redhat.com>
    30c22f38
mlx5_vnet.c 72.7 KB