Commit 5c56580b authored by Ben Hutchings's avatar Ben Hutchings

net: Adjust TX queue kobjects if number of queues changes during unregister

If the root qdisc for a net device is mqprio, and the driver's
ndo_setup_tc() operation dynamically adds and remvoes TX queues,
netif_set_real_num_tx_queues() will be called during device
unregistration to remove the extra TX queues when the qdisc is
destroyed.  Currently this causes the corresponding kobjects
to be leaked, and the device's reference count never drops to 0.
Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
parent ac7100ba
...@@ -1648,7 +1648,8 @@ int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq) ...@@ -1648,7 +1648,8 @@ int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq)
if (txq < 1 || txq > dev->num_tx_queues) if (txq < 1 || txq > dev->num_tx_queues)
return -EINVAL; return -EINVAL;
if (dev->reg_state == NETREG_REGISTERED) { if (dev->reg_state == NETREG_REGISTERED ||
dev->reg_state == NETREG_UNREGISTERING) {
ASSERT_RTNL(); ASSERT_RTNL();
rc = netdev_queue_update_kobjects(dev, dev->real_num_tx_queues, rc = netdev_queue_update_kobjects(dev, dev->real_num_tx_queues,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment