abort_with_msix_enabled:
        pci_disable_msix(priv->pdev);
 abort_with_msix_vectors:
-       kfree(priv->msix_vectors);
+       kvfree(priv->msix_vectors);
        priv->msix_vectors = NULL;
        return err;
 }
        priv->ntfy_blocks = NULL;
        free_irq(priv->msix_vectors[priv->mgmt_msix_idx].vector, priv);
        pci_disable_msix(priv->pdev);
-       kfree(priv->msix_vectors);
+       kvfree(priv->msix_vectors);
        priv->msix_vectors = NULL;
 }
 
        return 0;
 
 free_rx:
-       kfree(priv->rx);
+       kvfree(priv->rx);
        priv->rx = NULL;
 free_tx_queue:
        gve_tx_free_rings(priv);
 free_tx:
-       kfree(priv->tx);
+       kvfree(priv->tx);
        priv->tx = NULL;
        return err;
 }
                        gve_remove_napi(priv, ntfy_idx);
                }
                gve_tx_free_rings(priv);
-               kfree(priv->tx);
+               kvfree(priv->tx);
                priv->tx = NULL;
        }
        if (priv->rx) {
                        gve_remove_napi(priv, ntfy_idx);
                }
                gve_rx_free_rings(priv);
-               kfree(priv->rx);
+               kvfree(priv->rx);
                priv->rx = NULL;
        }
 }
                gve_free_page(&priv->pdev->dev, qpl->pages[i],
                              qpl->page_buses[i], gve_qpl_dma_dir(priv, id));
 
-       kfree(qpl->page_buses);
+       kvfree(qpl->page_buses);
 free_pages:
-       kfree(qpl->pages);
+       kvfree(qpl->pages);
        priv->num_registered_pages -= qpl->num_entries;
 }
 
 free_qpls:
        for (j = 0; j <= i; j++)
                gve_free_queue_page_list(priv, j);
-       kfree(priv->qpls);
+       kvfree(priv->qpls);
        return err;
 }
 
        int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv);
        int i;
 
-       kfree(priv->qpl_cfg.qpl_id_map);
+       kvfree(priv->qpl_cfg.qpl_id_map);
 
        for (i = 0; i < num_qpls; i++)
                gve_free_queue_page_list(priv, i);
 
-       kfree(priv->qpls);
+       kvfree(priv->qpls);
 }
 
 /* Use this to schedule a reset when the device is capable of continuing
 
 
        gve_unassign_qpl(priv, rx->data.qpl->id);
        rx->data.qpl = NULL;
-       kfree(rx->data.page_info);
+       kvfree(rx->data.page_info);
 
        slots = rx->data.mask + 1;
        bytes = sizeof(*rx->data.data_ring) * slots;
                          rx->q_resources, rx->q_resources_bus);
        rx->q_resources = NULL;
 abort_filled:
-       kfree(rx->data.page_info);
+       kvfree(rx->data.page_info);
 abort_with_slots:
        bytes = sizeof(*rx->data.data_ring) * slots;
        dma_free_coherent(hdev, bytes, rx->data.data_ring, rx->data.data_bus);