From: Pavel Skripkin Date: Fri, 9 Jul 2021 14:58:29 +0000 (+0300) Subject: net: ti: fix UAF in tlan_remove_one X-Git-Tag: v4.19.199~76 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a0a817b2d308fac090a05cbbe80988e073ac5193;p=users%2Fdwmw2%2Flinux.git net: ti: fix UAF in tlan_remove_one commit 0336f8ffece62f882ab3012820965a786a983f70 upstream. priv is netdev private data and it cannot be used after free_netdev() call. Using priv after free_netdev() can cause UAF bug. Fix it by moving free_netdev() at the end of the function. Fixes: 1e0a8b13d355 ("tlan: cancel work at remove path") Signed-off-by: Pavel Skripkin Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/net/ethernet/ti/tlan.c b/drivers/net/ethernet/ti/tlan.c index 01f99e5df1456..9f2129623d189 100644 --- a/drivers/net/ethernet/ti/tlan.c +++ b/drivers/net/ethernet/ti/tlan.c @@ -312,9 +312,8 @@ static void tlan_remove_one(struct pci_dev *pdev) pci_release_regions(pdev); #endif - free_netdev(dev); - cancel_work_sync(&priv->tlan_tqueue); + free_netdev(dev); } static void tlan_start(struct net_device *dev)