net-sysfs: warn if new queue objects are being created during device unregistration

Calling netdev_queue_update_kobjects is allowed during device
unregistration since commit 5c56580b74 ("net: Adjust TX queue kobjects
if number of queues changes during unregister"). But this is solely to
allow queue unregistrations. Any path attempting to add new queues after
a device started its unregistration should be fixed.

This patch adds a warning to detect such illegal use.

Signed-off-by: Antoine Tenart <atenart@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Antoine Tenart 2021-12-07 15:57:25 +01:00 committed by Jakub Kicinski
parent d7dac08341
commit 5f1c802ca6

View File

@ -1694,6 +1694,13 @@ netdev_queue_update_kobjects(struct net_device *dev, int old_num, int new_num)
int i;
int error = 0;
/* Tx queue kobjects are allowed to be updated when a device is being
* unregistered, but solely to remove queues from qdiscs. Any path
* adding queues should be fixed.
*/
WARN(dev->reg_state == NETREG_UNREGISTERING && new_num > old_num,
"New queues can't be registered after device unregistration.");
for (i = old_num; i < new_num; i++) {
error = netdev_queue_add_kobject(dev, i);
if (error) {