| From 09eb1b9f73d677d10d18039305b9d974e52cc6d5 Mon Sep 17 00:00:00 2001 |
| From: Nicola Fontana <ntd@entidi.it> |
| Date: Mon, 3 Jun 2024 12:45:48 +0200 |
| Subject: [PATCH] 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+. |
| |
| Upstream: https://gitlab.com/etherlab.org/ethercat/-/commit/95c25b50711ca7e1f990bdcbca8fa713c942ab01 |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| --- |
| devices/generic.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/devices/generic.c b/devices/generic.c |
| index 4d4d9bbd..f30f1e17 100644 |
| --- a/devices/generic.c |
| +++ b/devices/generic.c |
| @@ -420,14 +420,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); |
| @@ -436,7 +436,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); |
| -- |
| 2.45.2 |
| |