Re: [PATCH net] ethernet: ixgb: fix use after free bugs caused by circular dependency problem

From: Jakub Kicinski
Date: Thu Apr 20 2023 - 10:36:39 EST


On Thu, 20 Apr 2023 22:01:57 +0800 Duoming Zhou wrote:
> The watchdog_timer can schedule tx_timeout_task and tx_timeout_task
> can also arm watchdog_timer. The process is shown below:
>
> ----------- timer schedules work ------------
> ixgb_watchdog() //timer handler
> schedule_work(&adapter->tx_timeout_task)
>
> ----------- work arms timer ------------
> ixgb_tx_timeout_task() //workqueue callback function
> ixgb_up()
> mod_timer(&adapter->watchdog_timer,...)
>
> When ixgb device is detaching, the timer and workqueue
> could still be rearmed. The process is shown below:
>
> (cleanup routine) | (timer and workqueue routine)
> ixgb_remove() |
> | ixgb_tx_timeout_task() //workqueue
> | ixgb_up()
> | mod_timer()
> cancel_work_sync() |
> free_netdev(netdev) //FREE | ixgb_watchdog() //timer
> | netif_carrier_ok(netdev) //USE
>
> This patch adds timer_shutdown_sync() in ixgb_remove(), which
> could prevent rearming of the timer from the workqueue.
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Signed-off-by: Duoming Zhou <duoming@xxxxxxxxxx>

The driver has been removed. No point.