diff options
author | Antoine Tenart <atenart@kernel.org> | 2021-12-07 15:57:25 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-12-08 18:36:32 -0800 |
commit | 5f1c802ca69b3c076eea5fabc8839ffa5ddd8c8f (patch) | |
tree | e4421fe74b44f5c583dd69caf540a4436fd23304 /net | |
parent | d7dac083414eb5bb99a6d2ed53dc2c1b405224e5 (diff) | |
download | linux-stable-5f1c802ca69b3c076eea5fabc8839ffa5ddd8c8f.tar.gz linux-stable-5f1c802ca69b3c076eea5fabc8839ffa5ddd8c8f.tar.bz2 linux-stable-5f1c802ca69b3c076eea5fabc8839ffa5ddd8c8f.zip |
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 5c56580b74e5 ("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>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/net-sysfs.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 33f408c24205..53ea262ecafd 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -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) { |