Commit 8ec1e900 authored by Chuhong Yuan's avatar Chuhong Yuan Committed by David S. Miller

gve: replace kfree with kvfree

Variables allocated by kvzalloc should not be freed by kfree.
Because they may be allocated by vmalloc.
So we replace kfree with kvfree here.
Signed-off-by: default avatarChuhong Yuan <hslester96@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bb745231
...@@ -232,7 +232,7 @@ static int gve_alloc_notify_blocks(struct gve_priv *priv) ...@@ -232,7 +232,7 @@ static int gve_alloc_notify_blocks(struct gve_priv *priv)
abort_with_msix_enabled: abort_with_msix_enabled:
pci_disable_msix(priv->pdev); pci_disable_msix(priv->pdev);
abort_with_msix_vectors: abort_with_msix_vectors:
kfree(priv->msix_vectors); kvfree(priv->msix_vectors);
priv->msix_vectors = NULL; priv->msix_vectors = NULL;
return err; return err;
} }
...@@ -256,7 +256,7 @@ static void gve_free_notify_blocks(struct gve_priv *priv) ...@@ -256,7 +256,7 @@ static void gve_free_notify_blocks(struct gve_priv *priv)
priv->ntfy_blocks = NULL; priv->ntfy_blocks = NULL;
free_irq(priv->msix_vectors[priv->mgmt_msix_idx].vector, priv); free_irq(priv->msix_vectors[priv->mgmt_msix_idx].vector, priv);
pci_disable_msix(priv->pdev); pci_disable_msix(priv->pdev);
kfree(priv->msix_vectors); kvfree(priv->msix_vectors);
priv->msix_vectors = NULL; priv->msix_vectors = NULL;
} }
...@@ -445,12 +445,12 @@ static int gve_alloc_rings(struct gve_priv *priv) ...@@ -445,12 +445,12 @@ static int gve_alloc_rings(struct gve_priv *priv)
return 0; return 0;
free_rx: free_rx:
kfree(priv->rx); kvfree(priv->rx);
priv->rx = NULL; priv->rx = NULL;
free_tx_queue: free_tx_queue:
gve_tx_free_rings(priv); gve_tx_free_rings(priv);
free_tx: free_tx:
kfree(priv->tx); kvfree(priv->tx);
priv->tx = NULL; priv->tx = NULL;
return err; return err;
} }
...@@ -500,7 +500,7 @@ static void gve_free_rings(struct gve_priv *priv) ...@@ -500,7 +500,7 @@ static void gve_free_rings(struct gve_priv *priv)
gve_remove_napi(priv, ntfy_idx); gve_remove_napi(priv, ntfy_idx);
} }
gve_tx_free_rings(priv); gve_tx_free_rings(priv);
kfree(priv->tx); kvfree(priv->tx);
priv->tx = NULL; priv->tx = NULL;
} }
if (priv->rx) { if (priv->rx) {
...@@ -509,7 +509,7 @@ static void gve_free_rings(struct gve_priv *priv) ...@@ -509,7 +509,7 @@ static void gve_free_rings(struct gve_priv *priv)
gve_remove_napi(priv, ntfy_idx); gve_remove_napi(priv, ntfy_idx);
} }
gve_rx_free_rings(priv); gve_rx_free_rings(priv);
kfree(priv->rx); kvfree(priv->rx);
priv->rx = NULL; priv->rx = NULL;
} }
} }
...@@ -592,9 +592,9 @@ static void gve_free_queue_page_list(struct gve_priv *priv, ...@@ -592,9 +592,9 @@ static void gve_free_queue_page_list(struct gve_priv *priv,
gve_free_page(&priv->pdev->dev, qpl->pages[i], gve_free_page(&priv->pdev->dev, qpl->pages[i],
qpl->page_buses[i], gve_qpl_dma_dir(priv, id)); qpl->page_buses[i], gve_qpl_dma_dir(priv, id));
kfree(qpl->page_buses); kvfree(qpl->page_buses);
free_pages: free_pages:
kfree(qpl->pages); kvfree(qpl->pages);
priv->num_registered_pages -= qpl->num_entries; priv->num_registered_pages -= qpl->num_entries;
} }
...@@ -635,7 +635,7 @@ static int gve_alloc_qpls(struct gve_priv *priv) ...@@ -635,7 +635,7 @@ static int gve_alloc_qpls(struct gve_priv *priv)
free_qpls: free_qpls:
for (j = 0; j <= i; j++) for (j = 0; j <= i; j++)
gve_free_queue_page_list(priv, j); gve_free_queue_page_list(priv, j);
kfree(priv->qpls); kvfree(priv->qpls);
return err; return err;
} }
...@@ -644,12 +644,12 @@ static void gve_free_qpls(struct gve_priv *priv) ...@@ -644,12 +644,12 @@ static void gve_free_qpls(struct gve_priv *priv)
int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv);
int i; int i;
kfree(priv->qpl_cfg.qpl_id_map); kvfree(priv->qpl_cfg.qpl_id_map);
for (i = 0; i < num_qpls; i++) for (i = 0; i < num_qpls; i++)
gve_free_queue_page_list(priv, 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 /* Use this to schedule a reset when the device is capable of continuing
......
...@@ -35,7 +35,7 @@ static void gve_rx_free_ring(struct gve_priv *priv, int idx) ...@@ -35,7 +35,7 @@ static void gve_rx_free_ring(struct gve_priv *priv, int idx)
gve_unassign_qpl(priv, rx->data.qpl->id); gve_unassign_qpl(priv, rx->data.qpl->id);
rx->data.qpl = NULL; rx->data.qpl = NULL;
kfree(rx->data.page_info); kvfree(rx->data.page_info);
slots = rx->data.mask + 1; slots = rx->data.mask + 1;
bytes = sizeof(*rx->data.data_ring) * slots; bytes = sizeof(*rx->data.data_ring) * slots;
...@@ -168,7 +168,7 @@ static int gve_rx_alloc_ring(struct gve_priv *priv, int idx) ...@@ -168,7 +168,7 @@ static int gve_rx_alloc_ring(struct gve_priv *priv, int idx)
rx->q_resources, rx->q_resources_bus); rx->q_resources, rx->q_resources_bus);
rx->q_resources = NULL; rx->q_resources = NULL;
abort_filled: abort_filled:
kfree(rx->data.page_info); kvfree(rx->data.page_info);
abort_with_slots: abort_with_slots:
bytes = sizeof(*rx->data.data_ring) * slots; bytes = sizeof(*rx->data.data_ring) * slots;
dma_free_coherent(hdev, bytes, rx->data.data_ring, rx->data.data_bus); dma_free_coherent(hdev, bytes, rx->data.data_ring, rx->data.data_bus);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment