* [PATCH net-next v2 0/2] net: bring back dev_addr_sem
@ 2025-03-12 19:05 Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 1/2] Revert "net: replace dev_addr_sem with netdev instance lock" Stanislav Fomichev
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Stanislav Fomichev @ 2025-03-12 19:05 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel,
willemdebruijn.kernel, jasowang, andrew+netdev, horms, sdf,
jdamato, kory.maincent, kuniyu, atenart
Kohei reports an issue with dev_addr_sem conversion to netdev instance
lock in [0]. Based on the discussion, switching to netdev instance
lock to protect the address might not work for the devices that
are not using netdev ops lock.
Bring dev_addr_sem instance lock back but fix the ordering.
0: https://lore.kernel.org/netdev/20250308203835.60633-2-enjuk@amazon.com
Stanislav Fomichev (2):
Revert "net: replace dev_addr_sem with netdev instance lock"
net: reorder dev_addr_sem lock
drivers/net/tap.c | 2 +-
drivers/net/tun.c | 2 +-
include/linux/netdevice.h | 4 +++-
net/core/dev.c | 41 +++++++++++++--------------------------
net/core/dev.h | 3 ++-
net/core/dev_api.c | 19 ++++++++++++++++--
net/core/dev_ioctl.c | 2 +-
net/core/net-sysfs.c | 7 +++++--
net/core/rtnetlink.c | 17 +++++++++++-----
9 files changed, 56 insertions(+), 41 deletions(-)
--
2.48.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net-next v2 1/2] Revert "net: replace dev_addr_sem with netdev instance lock"
2025-03-12 19:05 [PATCH net-next v2 0/2] net: bring back dev_addr_sem Stanislav Fomichev
@ 2025-03-12 19:05 ` Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock Stanislav Fomichev
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Stanislav Fomichev @ 2025-03-12 19:05 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel,
willemdebruijn.kernel, jasowang, andrew+netdev, horms, sdf,
jdamato, kory.maincent, kuniyu, atenart, Kohei Enju
This reverts commit df43d8bf10316a7c3b1e47e3cc0057a54df4a5b8.
Cc: Kohei Enju <enjuk@amazon.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Fixes: df43d8bf1031 ("net: replace dev_addr_sem with netdev instance lock")
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
drivers/net/tap.c | 2 +-
drivers/net/tun.c | 2 +-
include/linux/netdevice.h | 6 ++++-
net/core/dev.c | 52 +++++++++++++++++++--------------------
net/core/dev.h | 3 ++-
net/core/dev_api.c | 17 +++++++++++--
net/core/dev_ioctl.c | 2 +-
net/core/net-sysfs.c | 7 ++++--
net/core/rtnetlink.c | 6 +----
9 files changed, 56 insertions(+), 41 deletions(-)
diff --git a/drivers/net/tap.c b/drivers/net/tap.c
index 4382f5e323b0..d4ece538f1b2 100644
--- a/drivers/net/tap.c
+++ b/drivers/net/tap.c
@@ -1017,7 +1017,7 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
rtnl_unlock();
return -ENOLINK;
}
- ret = dev_set_mac_address(tap->dev, &sa, NULL);
+ ret = dev_set_mac_address_user(tap->dev, &sa, NULL);
tap_put_tap_dev(tap);
rtnl_unlock();
return ret;
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 55b60cb68d00..f75f912a0225 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -3193,7 +3193,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
case SIOCSIFHWADDR:
/* Set hw address */
- ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr, NULL);
+ ret = dev_set_mac_address_user(tun->dev, &ifr.ifr_hwaddr, NULL);
break;
case TUNGETSNDBUF:
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 9a297757df7e..42c75cb028e7 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2498,7 +2498,7 @@ struct net_device {
*
* Protects:
* @gro_flush_timeout, @napi_defer_hard_irqs, @napi_list,
- * @net_shaper_hierarchy, @reg_state, @threaded, @dev_addr
+ * @net_shaper_hierarchy, @reg_state, @threaded
*
* Partially protects (writers must hold both @lock and rtnl_lock):
* @up
@@ -4198,6 +4198,10 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
struct netlink_ext_ack *extack);
int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
struct netlink_ext_ack *extack);
+int netif_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
+ struct netlink_ext_ack *extack);
+int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
+ struct netlink_ext_ack *extack);
int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
int dev_get_port_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid, bool recurse);
diff --git a/net/core/dev.c b/net/core/dev.c
index 1cb134ff7327..5a64389461e2 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1059,28 +1059,6 @@ struct net_device *netdev_get_by_index_lock(struct net *net, int ifindex)
return __netdev_put_lock(dev);
}
-/**
- * netdev_get_by_name_lock() - find a device by its name
- * @net: the applicable net namespace
- * @name: name of device
- *
- * Search for an interface by name. If a valid device
- * with @name is found it will be returned with netdev->lock held.
- * netdev_unlock() must be called to release it.
- *
- * Return: pointer to a device with lock held, NULL if not found.
- */
-struct net_device *netdev_get_by_name_lock(struct net *net, const char *name)
-{
- struct net_device *dev;
-
- dev = dev_get_by_name(net, name);
- if (!dev)
- return NULL;
-
- return __netdev_put_lock(dev);
-}
-
struct net_device *
netdev_xa_find_lock(struct net *net, struct net_device *dev,
unsigned long *index)
@@ -9612,24 +9590,44 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
return 0;
}
+DECLARE_RWSEM(dev_addr_sem);
+
+int netif_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
+ struct netlink_ext_ack *extack)
+{
+ int ret;
+
+ down_write(&dev_addr_sem);
+ ret = netif_set_mac_address(dev, sa, extack);
+ up_write(&dev_addr_sem);
+ return ret;
+}
+
int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
{
size_t size = sizeof(sa->sa_data_min);
struct net_device *dev;
+ int ret = 0;
- dev = netdev_get_by_name_lock(net, dev_name);
- if (!dev)
- return -ENODEV;
+ down_read(&dev_addr_sem);
+ rcu_read_lock();
+ dev = dev_get_by_name_rcu(net, dev_name);
+ if (!dev) {
+ ret = -ENODEV;
+ goto unlock;
+ }
if (!dev->addr_len)
memset(sa->sa_data, 0, size);
else
memcpy(sa->sa_data, dev->dev_addr,
min_t(size_t, size, dev->addr_len));
sa->sa_family = dev->type;
- netdev_unlock(dev);
- return 0;
+unlock:
+ rcu_read_unlock();
+ up_read(&dev_addr_sem);
+ return ret;
}
EXPORT_SYMBOL(dev_get_mac_address);
diff --git a/net/core/dev.h b/net/core/dev.h
index 0ddd3631acb0..7ee203395d8e 100644
--- a/net/core/dev.h
+++ b/net/core/dev.h
@@ -29,7 +29,6 @@ netdev_napi_by_id_lock(struct net *net, unsigned int napi_id);
struct net_device *dev_get_by_napi_id(unsigned int napi_id);
struct net_device *netdev_get_by_index_lock(struct net *net, int ifindex);
-struct net_device *netdev_get_by_name_lock(struct net *net, const char *name);
struct net_device *__netdev_put_lock(struct net_device *dev);
struct net_device *
netdev_xa_find_lock(struct net *net, struct net_device *dev,
@@ -71,6 +70,8 @@ extern int weight_p;
extern int dev_weight_rx_bias;
extern int dev_weight_tx_bias;
+extern struct rw_semaphore dev_addr_sem;
+
/* rtnl helpers */
extern struct list_head net_todo_list;
void netdev_run_todo(void);
diff --git a/net/core/dev_api.c b/net/core/dev_api.c
index 1f0e24849bc6..2e17548af685 100644
--- a/net/core/dev_api.c
+++ b/net/core/dev_api.c
@@ -84,6 +84,19 @@ void dev_set_group(struct net_device *dev, int new_group)
netdev_unlock_ops(dev);
}
+int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
+ struct netlink_ext_ack *extack)
+{
+ int ret;
+
+ netdev_lock_ops(dev);
+ ret = netif_set_mac_address_user(dev, sa, extack);
+ netdev_unlock_ops(dev);
+
+ return ret;
+}
+EXPORT_SYMBOL(dev_set_mac_address_user);
+
/**
* dev_change_net_namespace() - move device to different nethost namespace
* @dev: device
@@ -299,9 +312,9 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
{
int ret;
- netdev_lock(dev);
+ netdev_lock_ops(dev);
ret = netif_set_mac_address(dev, sa, extack);
- netdev_unlock(dev);
+ netdev_unlock_ops(dev);
return ret;
}
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
index 5471cf4fc984..eb8b41ec5523 100644
--- a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
@@ -575,7 +575,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, void __user *data,
case SIOCSIFHWADDR:
if (dev->addr_len > sizeof(struct sockaddr))
return -EINVAL;
- return dev_set_mac_address(dev, &ifr->ifr_hwaddr, NULL);
+ return dev_set_mac_address_user(dev, &ifr->ifr_hwaddr, NULL);
case SIOCSIFHWBROADCAST:
if (ifr->ifr_hwaddr.sa_family != dev->type)
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index 529a0f721268..abaa1c919b98 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -263,11 +263,14 @@ static ssize_t address_show(struct device *dev, struct device_attribute *attr,
struct net_device *ndev = to_net_dev(dev);
ssize_t ret = -EINVAL;
- netdev_lock(ndev);
+ down_read(&dev_addr_sem);
+
+ rcu_read_lock();
if (dev_isalive(ndev))
ret = sysfs_format_mac(buf, ndev->dev_addr, ndev->addr_len);
- netdev_unlock(ndev);
+ rcu_read_unlock();
+ up_read(&dev_addr_sem);
return ret;
}
static DEVICE_ATTR_RO(address);
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 90597bf84e3d..9355058bf996 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3090,11 +3090,7 @@ static int do_setlink(const struct sk_buff *skb, struct net_device *dev,
sa->sa_family = dev->type;
memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]),
dev->addr_len);
- if (!netdev_need_ops_lock(dev))
- netdev_lock(dev);
- err = netif_set_mac_address(dev, sa, extack);
- if (!netdev_need_ops_lock(dev))
- netdev_unlock(dev);
+ err = netif_set_mac_address_user(dev, sa, extack);
kfree(sa);
if (err)
goto errout;
--
2.48.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock
2025-03-12 19:05 [PATCH net-next v2 0/2] net: bring back dev_addr_sem Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 1/2] Revert "net: replace dev_addr_sem with netdev instance lock" Stanislav Fomichev
@ 2025-03-12 19:05 ` Stanislav Fomichev
2025-03-13 17:56 ` Kuniyuki Iwashima
2025-03-17 8:15 ` [PATCH net-next v2 0/2] net: bring back dev_addr_sem Lei Yang
2025-03-19 18:00 ` patchwork-bot+netdevbpf
3 siblings, 1 reply; 6+ messages in thread
From: Stanislav Fomichev @ 2025-03-12 19:05 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel,
willemdebruijn.kernel, jasowang, andrew+netdev, horms, sdf,
jdamato, kory.maincent, kuniyu, atenart, Kohei Enju
Lockdep complains about circular lock in 1 -> 2 -> 3 (see below).
Change the lock ordering to be:
- rtnl_lock
- dev_addr_sem
- netdev_ops (only for lower devices!)
- team_lock (or other per-upper device lock)
1. rtnl_lock -> netdev_ops -> dev_addr_sem
rtnl_setlink
rtnl_lock
do_setlink IFLA_ADDRESS on lower
netdev_ops
dev_addr_sem
2. rtnl_lock -> team_lock -> netdev_ops
rtnl_newlink
rtnl_lock
do_setlink IFLA_MASTER on lower
do_set_master
team_add_slave
team_lock
team_port_add
dev_set_mtu
netdev_ops
3. rtnl_lock -> dev_addr_sem -> team_lock
rtnl_newlink
rtnl_lock
do_setlink IFLA_ADDRESS on upper
dev_addr_sem
netif_set_mac_address
team_set_mac_address
team_lock
4. rtnl_lock -> netdev_ops -> dev_addr_sem
rtnl_lock
dev_ifsioc
dev_set_mac_address_user
__tun_chr_ioctl
rtnl_lock
dev_set_mac_address_user
tap_ioctl
rtnl_lock
dev_set_mac_address_user
dev_set_mac_address_user
netdev_lock_ops
netif_set_mac_address_user
dev_addr_sem
v2:
- move lock reorder to happen after kmalloc (Kuniyuki)
Cc: Kohei Enju <enjuk@amazon.com>
Fixes: df43d8bf1031 ("net: replace dev_addr_sem with netdev instance lock")
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
include/linux/netdevice.h | 2 --
net/core/dev.c | 11 -----------
net/core/dev_api.c | 4 +++-
net/core/rtnetlink.c | 15 +++++++++++++--
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 42c75cb028e7..2bf1f914f61a 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4198,8 +4198,6 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
struct netlink_ext_ack *extack);
int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
struct netlink_ext_ack *extack);
-int netif_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
- struct netlink_ext_ack *extack);
int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
struct netlink_ext_ack *extack);
int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
diff --git a/net/core/dev.c b/net/core/dev.c
index 5a64389461e2..66290c159ad8 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9592,17 +9592,6 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr *sa,
DECLARE_RWSEM(dev_addr_sem);
-int netif_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
- struct netlink_ext_ack *extack)
-{
- int ret;
-
- down_write(&dev_addr_sem);
- ret = netif_set_mac_address(dev, sa, extack);
- up_write(&dev_addr_sem);
- return ret;
-}
-
int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
{
size_t size = sizeof(sa->sa_data_min);
diff --git a/net/core/dev_api.c b/net/core/dev_api.c
index 2e17548af685..8dbc60612100 100644
--- a/net/core/dev_api.c
+++ b/net/core/dev_api.c
@@ -89,9 +89,11 @@ int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
{
int ret;
+ down_write(&dev_addr_sem);
netdev_lock_ops(dev);
- ret = netif_set_mac_address_user(dev, sa, extack);
+ ret = netif_set_mac_address(dev, sa, extack);
netdev_unlock_ops(dev);
+ up_write(&dev_addr_sem);
return ret;
}
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 9355058bf996..5a24a30dfc2d 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3088,13 +3088,24 @@ static int do_setlink(const struct sk_buff *skb, struct net_device *dev,
goto errout;
}
sa->sa_family = dev->type;
+
+ netdev_unlock_ops(dev);
+
+ /* dev_addr_sem is an outer lock, enforce proper ordering */
+ down_write(&dev_addr_sem);
+ netdev_lock_ops(dev);
+
memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]),
dev->addr_len);
- err = netif_set_mac_address_user(dev, sa, extack);
+ err = netif_set_mac_address(dev, sa, extack);
kfree(sa);
- if (err)
+ if (err) {
+ up_write(&dev_addr_sem);
goto errout;
+ }
status |= DO_SETLINK_MODIFIED;
+
+ up_write(&dev_addr_sem);
}
if (tb[IFLA_MTU]) {
--
2.48.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock
2025-03-12 19:05 ` [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock Stanislav Fomichev
@ 2025-03-13 17:56 ` Kuniyuki Iwashima
0 siblings, 0 replies; 6+ messages in thread
From: Kuniyuki Iwashima @ 2025-03-13 17:56 UTC (permalink / raw)
To: sdf
Cc: andrew+netdev, atenart, davem, edumazet, enjuk, horms, jasowang,
jdamato, kory.maincent, kuba, kuniyu, linux-kernel, netdev,
pabeni, willemdebruijn.kernel
From: Stanislav Fomichev <sdf@fomichev.me>
Date: Wed, 12 Mar 2025 12:05:13 -0700
> Lockdep complains about circular lock in 1 -> 2 -> 3 (see below).
>
> Change the lock ordering to be:
> - rtnl_lock
> - dev_addr_sem
> - netdev_ops (only for lower devices!)
> - team_lock (or other per-upper device lock)
>
> 1. rtnl_lock -> netdev_ops -> dev_addr_sem
>
> rtnl_setlink
> rtnl_lock
> do_setlink IFLA_ADDRESS on lower
> netdev_ops
> dev_addr_sem
>
> 2. rtnl_lock -> team_lock -> netdev_ops
>
> rtnl_newlink
> rtnl_lock
> do_setlink IFLA_MASTER on lower
> do_set_master
> team_add_slave
> team_lock
> team_port_add
> dev_set_mtu
> netdev_ops
>
> 3. rtnl_lock -> dev_addr_sem -> team_lock
>
> rtnl_newlink
> rtnl_lock
> do_setlink IFLA_ADDRESS on upper
> dev_addr_sem
> netif_set_mac_address
> team_set_mac_address
> team_lock
>
> 4. rtnl_lock -> netdev_ops -> dev_addr_sem
>
> rtnl_lock
> dev_ifsioc
> dev_set_mac_address_user
>
> __tun_chr_ioctl
> rtnl_lock
> dev_set_mac_address_user
>
> tap_ioctl
> rtnl_lock
> dev_set_mac_address_user
>
> dev_set_mac_address_user
> netdev_lock_ops
> netif_set_mac_address_user
> dev_addr_sem
>
> v2:
> - move lock reorder to happen after kmalloc (Kuniyuki)
My intention was move kmalloc() and memcpy() out of both
netdev_lock and dev_addr_sem like
netdev_ops_unlock()
kmalloc()
memcpy()
down_write()
, but not a big deal :)
>
> Cc: Kohei Enju <enjuk@amazon.com>
> Fixes: df43d8bf1031 ("net: replace dev_addr_sem with netdev instance lock")
> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next v2 0/2] net: bring back dev_addr_sem
2025-03-12 19:05 [PATCH net-next v2 0/2] net: bring back dev_addr_sem Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 1/2] Revert "net: replace dev_addr_sem with netdev instance lock" Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock Stanislav Fomichev
@ 2025-03-17 8:15 ` Lei Yang
2025-03-19 18:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 6+ messages in thread
From: Lei Yang @ 2025-03-17 8:15 UTC (permalink / raw)
To: Stanislav Fomichev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
willemdebruijn.kernel, jasowang, andrew+netdev, horms, jdamato,
kory.maincent, kuniyu, atenart
QE tested this series of patches with virtio-net regression tests,
everything works fine.
Tested-by: Lei Yang <leiyang@redhat.com>
On Thu, Mar 13, 2025 at 3:05 AM Stanislav Fomichev <sdf@fomichev.me> wrote:
>
> Kohei reports an issue with dev_addr_sem conversion to netdev instance
> lock in [0]. Based on the discussion, switching to netdev instance
> lock to protect the address might not work for the devices that
> are not using netdev ops lock.
> Bring dev_addr_sem instance lock back but fix the ordering.
>
> 0: https://lore.kernel.org/netdev/20250308203835.60633-2-enjuk@amazon.com
>
> Stanislav Fomichev (2):
> Revert "net: replace dev_addr_sem with netdev instance lock"
> net: reorder dev_addr_sem lock
>
> drivers/net/tap.c | 2 +-
> drivers/net/tun.c | 2 +-
> include/linux/netdevice.h | 4 +++-
> net/core/dev.c | 41 +++++++++++++--------------------------
> net/core/dev.h | 3 ++-
> net/core/dev_api.c | 19 ++++++++++++++++--
> net/core/dev_ioctl.c | 2 +-
> net/core/net-sysfs.c | 7 +++++--
> net/core/rtnetlink.c | 17 +++++++++++-----
> 9 files changed, 56 insertions(+), 41 deletions(-)
>
> --
> 2.48.1
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next v2 0/2] net: bring back dev_addr_sem
2025-03-12 19:05 [PATCH net-next v2 0/2] net: bring back dev_addr_sem Stanislav Fomichev
` (2 preceding siblings ...)
2025-03-17 8:15 ` [PATCH net-next v2 0/2] net: bring back dev_addr_sem Lei Yang
@ 2025-03-19 18:00 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-03-19 18:00 UTC (permalink / raw)
To: Stanislav Fomichev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
willemdebruijn.kernel, jasowang, andrew+netdev, horms, jdamato,
kory.maincent, kuniyu, atenart
Hello:
This series was applied to netdev/net-next.git (main)
by Paolo Abeni <pabeni@redhat.com>:
On Wed, 12 Mar 2025 12:05:11 -0700 you wrote:
> Kohei reports an issue with dev_addr_sem conversion to netdev instance
> lock in [0]. Based on the discussion, switching to netdev instance
> lock to protect the address might not work for the devices that
> are not using netdev ops lock.
> Bring dev_addr_sem instance lock back but fix the ordering.
>
> 0: https://lore.kernel.org/netdev/20250308203835.60633-2-enjuk@amazon.com
>
> [...]
Here is the summary with links:
- [net-next,v2,1/2] Revert "net: replace dev_addr_sem with netdev instance lock"
https://git.kernel.org/netdev/net-next/c/8033d2aef517
- [net-next,v2,2/2] net: reorder dev_addr_sem lock
https://git.kernel.org/netdev/net-next/c/6dd132516f8e
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-03-19 17:59 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 19:05 [PATCH net-next v2 0/2] net: bring back dev_addr_sem Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 1/2] Revert "net: replace dev_addr_sem with netdev instance lock" Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock Stanislav Fomichev
2025-03-13 17:56 ` Kuniyuki Iwashima
2025-03-17 8:15 ` [PATCH net-next v2 0/2] net: bring back dev_addr_sem Lei Yang
2025-03-19 18:00 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).