Add ASSERT_RTNL at the top of __netif_set_xps_queue and add a comment about holding the rtnl lock before the function.
Suggested-by: Alexander Duyck <alexander.du...@gmail.com> Signed-off-by: Antoine Tenart <aten...@kernel.org> --- net/core/dev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c index 2a0a777390c6..c639761ddb5e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2623,7 +2623,7 @@ static void xps_copy_dev_maps(struct xps_dev_maps *dev_maps, } } -/* Must be called under cpus_read_lock */ +/* Must be called under rtnl_lock and cpus_read_lock */ int __netif_set_xps_queue(struct net_device *dev, const unsigned long *mask, u16 index, bool is_rxqs_map) { @@ -2635,6 +2635,8 @@ int __netif_set_xps_queue(struct net_device *dev, const unsigned long *mask, struct xps_map *map, *new_map; unsigned int nr_ids; + ASSERT_RTNL(); + if (dev->num_tc) { /* Do not allow XPS on subordinate device directly */ num_tc = dev->num_tc; -- 2.29.2