On Mon, 16 Feb 2026 14:44:57 +0000, Kohei Enju wrote:
> The scenario flow lacked netdev_(un)lock, my bad.
>
> Thread 1 (ethtool -L) Thread 2 (work) Thread 3 (ethtool -S)
> netdev_lock()
> iavf_set_channels()
> ...
> iavf_alloc_queues()
> -> alloc {tx,rx}_rings
> -> num_active_queues = 8
> iavf_schedule_finish_config()
> netdev_unlock()
> netdev_lock()
> iavf_get_sset_count()
> real_num_tx_queues: 1
> -> buffer for 1 queue
> iavf_get_ethtool_stats()
> num_active_queues: 8
> -> out-of-bounds!
> netdev_unlock()
> iavf_finish_config()
> netdev_lock()
> -> real_num_tx_queues = 8
> netdev_unlock()
Note that the flow of Thread 1 is based on a recent commit
b542fa9dd830 ("iavf: fix incorrect reset handling in callbacks") in
tnguy/net-queue.git.