virtio: coverity woes -- divide by zero 73/34973/3
authorSteven Luong <sluong@cisco.com>
Wed, 19 Jan 2022 17:08:27 +0000 (09:08 -0800)
committerBeno�t Ganne <bganne@cisco.com>
Tue, 1 Feb 2022 16:33:26 +0000 (16:33 +0000)
Coverity complains the expression, j % vif->num_txq, may encounter
divide by zero. While there is little chance that vif->num_txq is
zero, it is easy to prevent divide by zero if vif->num_txq is ever
zero.

Type: fix
Fixes: I337ec63d0868f665329d68eadf1744e080b73a0d

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I2e91f296737ce266ab70fffc1f442cc600724fa2

src/vnet/devices/virtio/virtio.c

index 2d1edfe..bbca81c 100644 (file)
@@ -295,6 +295,13 @@ virtio_vring_set_tx_queues (vlib_main_t *vm, virtio_if_t *vif)
        vnm, vif->hw_if_index, TX_QUEUE_ACCESS (vring->queue_id));
     }
 
+  if (vif->num_txqs == 0)
+    {
+      virtio_log_error (vif, "Interface %U has 0 txq",
+                       format_vnet_hw_if_index_name, vnm, vif->hw_if_index);
+      return;
+    }
+
   for (u32 j = 0; j < vlib_get_n_threads (); j++)
     {
       u32 qi = vif->txq_vrings[j % vif->num_txqs].queue_index;