[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20230420073619.6001cb27@kernel.org>
Date: Thu, 20 Apr 2023 07:36:19 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Duoming Zhou <duoming@....edu.cn>
Cc: netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
jesse.brandeburg@...el.com, anthony.l.nguyen@...el.com,
davem@...emloft.net, edumazet@...gle.com, pabeni@...hat.com,
intel-wired-lan@...ts.osuosl.org
Subject: Re: [PATCH net] ethernet: ixgb: fix use after free bugs caused by
circular dependency problem
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@....edu.cn>
The driver has been removed. No point.
Powered by blists - more mailing lists