gve: DQO: Fix off by one in gve_rx_dqo()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 29 Jun 2021 08:25:13 +0000 (11:25 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Jun 2021 18:49:44 +0000 (11:49 -0700)
The rx->dqo.buf_states[] array is allocated in gve_rx_alloc_ring_dqo()
and it has rx->dqo.num_buf_states so this > needs to >= to prevent an
out of bounds access.

Fixes: 9b8dd5e5ea48 ("gve: DQO: Add RX path")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/google/gve/gve_rx_dqo.c

index 8738db0..77bb822 100644 (file)
@@ -525,7 +525,7 @@ static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx,
        struct gve_priv *priv = rx->gve;
        u16 buf_len;
 
-       if (unlikely(buffer_id > rx->dqo.num_buf_states)) {
+       if (unlikely(buffer_id >= rx->dqo.num_buf_states)) {
                net_err_ratelimited("%s: Invalid RX buffer_id=%u\n",
                                    priv->dev->name, buffer_id);
                return -EINVAL;