Denis Kirjanov acd09d
From c0c1865c3b8ad8f1231b14dbb1c9208d27c92a61 Mon Sep 17 00:00:00 2001
Denis Kirjanov acd09d
From: Valentin Vidic <vvidic@valentin-vidic.from.hr>
Denis Kirjanov acd09d
Date: Mon, 12 Oct 2020 00:03:29 +0200
Denis Kirjanov acd09d
Subject: [PATCH 7/8] net: korina: fix kfree of rx/tx descriptor array
Denis Kirjanov acd09d
Git-commit: 3af5f0f5c74ecbaf757ef06c3f80d56751277637
Denis Kirjanov acd09d
Patch-mainline: v5.10-rc1
Denis Kirjanov acd09d
References: git-fixes
Denis Kirjanov acd09d
Denis Kirjanov acd09d
kmalloc returns KSEG0 addresses so convert back from KSEG1
Denis Kirjanov acd09d
in kfree. Also make sure array is freed when the driver is
Denis Kirjanov acd09d
unloaded from the kernel.
Denis Kirjanov acd09d
Denis Kirjanov acd09d
Fixes: ef11291bcd5f ("Add support the Korina (IDT RC32434) Ethernet MAC")
Denis Kirjanov acd09d
Signed-off-by: Valentin Vidic <vvidic@valentin-vidic.from.hr>
Denis Kirjanov acd09d
Acked-by: Willem de Bruijn <willemb@google.com>
Denis Kirjanov acd09d
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Denis Kirjanov acd09d
Signed-off-by: Denis Kirjanov <denis.kirjanov@suse.com>
Denis Kirjanov acd09d
---
Denis Kirjanov acd09d
 drivers/net/ethernet/korina.c | 3 ++-
Denis Kirjanov acd09d
 1 file changed, 2 insertions(+), 1 deletion(-)
Denis Kirjanov acd09d
Denis Kirjanov acd09d
diff --git a/drivers/net/ethernet/korina.c b/drivers/net/ethernet/korina.c
Denis Kirjanov acd09d
index 3c0a6451273d..1357d464e8c4 100644
Denis Kirjanov acd09d
--- a/drivers/net/ethernet/korina.c
Denis Kirjanov acd09d
+++ b/drivers/net/ethernet/korina.c
Denis Kirjanov acd09d
@@ -1188,7 +1188,7 @@ static int korina_probe(struct platform_device *pdev)
Denis Kirjanov acd09d
 	return rc;
Denis Kirjanov acd09d
 
Denis Kirjanov acd09d
 probe_err_register:
Denis Kirjanov acd09d
-	kfree(lp->td_ring);
Denis Kirjanov acd09d
+	kfree(KSEG0ADDR(lp->td_ring));
Denis Kirjanov acd09d
 probe_err_td_ring:
Denis Kirjanov acd09d
 	iounmap(lp->tx_dma_regs);
Denis Kirjanov acd09d
 probe_err_dma_tx:
Denis Kirjanov acd09d
@@ -1208,6 +1208,7 @@ static int korina_remove(struct platform_device *pdev)
Denis Kirjanov acd09d
 	iounmap(lp->eth_regs);
Denis Kirjanov acd09d
 	iounmap(lp->rx_dma_regs);
Denis Kirjanov acd09d
 	iounmap(lp->tx_dma_regs);
Denis Kirjanov acd09d
+	kfree(KSEG0ADDR(lp->td_ring));
Denis Kirjanov acd09d
 
Denis Kirjanov acd09d
 	unregister_netdev(bif->dev);
Denis Kirjanov acd09d
 	free_netdev(bif->dev);
Denis Kirjanov acd09d
-- 
Denis Kirjanov acd09d
2.16.4
Denis Kirjanov acd09d