Remove dev_base_lock for linux >= 6.9.0

Kernel commit 1b3ef46cb7f2618cc0b507393220a69810f6da12 removed
`dev_base_lock` from v6.9 onward.

Use the alternate iterator `for_each_netdev_rcu` introduced by commit
c6d14c84566d6b70ad9dc1618db0dec87cca9300 in 2.6.33+.
This commit is contained in:
Nicola Fontana 2024-06-03 12:45:48 +02:00
parent f4e9367dde
commit 95c25b5071
1 changed files with 4 additions and 4 deletions

View File

@ -423,14 +423,14 @@ int __init ec_gen_init_module(void)
INIT_LIST_HEAD(&generic_devices);
INIT_LIST_HEAD(&descs);
read_lock(&dev_base_lock);
for_each_netdev(&init_net, netdev) {
rcu_read_lock();
for_each_netdev_rcu(&init_net, netdev) {
if (netdev->type != ARPHRD_ETHER)
continue;
desc = kmalloc(sizeof(ec_gen_interface_desc_t), GFP_ATOMIC);
if (!desc) {
ret = -ENOMEM;
read_unlock(&dev_base_lock);
rcu_read_unlock();
goto out_err;
}
strncpy(desc->name, netdev->name, IFNAMSIZ);
@ -439,7 +439,7 @@ int __init ec_gen_init_module(void)
memcpy(desc->dev_addr, netdev->dev_addr, ETH_ALEN);
list_add_tail(&desc->list, &descs);
}
read_unlock(&dev_base_lock);
rcu_read_unlock();
list_for_each_entry_safe(desc, next, &descs, list) {
ret = offer_device(desc);