mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
net: require instance lock for NETDEV_DOWN/GOING_DOWN notifiers
Sprinkle a few asserts about ops lock: netif_close_many and __dev_notify_flags should now consistently run under the lock Signed-off-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://patch.msgid.link/20260702224150.3730033-6-sdf@fomichev.me Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
b8d2262b96
commit
f540caaaca
@@ -421,6 +421,8 @@ running under the lock:
|
||||
* ``NETDEV_CHANGENAME``
|
||||
* ``NETDEV_REGISTER``
|
||||
* ``NETDEV_UP``
|
||||
* ``NETDEV_DOWN``
|
||||
* ``NETDEV_GOING_DOWN``
|
||||
|
||||
The following notifiers are running without the lock:
|
||||
* ``NETDEV_UNREGISTER``
|
||||
|
||||
@@ -1802,6 +1802,7 @@ void netif_close_many(struct list_head *head, bool unlink)
|
||||
__dev_close_many(head);
|
||||
|
||||
list_for_each_entry_safe(dev, tmp, head, close_list) {
|
||||
netdev_assert_locked_ops_compat(dev);
|
||||
rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP | IFF_RUNNING, GFP_KERNEL, 0, NULL);
|
||||
call_netdevice_notifiers(NETDEV_DOWN, dev);
|
||||
if (unlink)
|
||||
@@ -9787,6 +9788,8 @@ void __dev_notify_flags(struct net_device *dev, unsigned int old_flags,
|
||||
{
|
||||
unsigned int changes = dev->flags ^ old_flags;
|
||||
|
||||
netdev_assert_locked_ops_compat(dev);
|
||||
|
||||
if (gchanges)
|
||||
rtmsg_ifinfo(RTM_NEWLINK, dev, gchanges, GFP_ATOMIC, portid, nlh);
|
||||
|
||||
|
||||
@@ -24,15 +24,15 @@ int netdev_debug_event(struct notifier_block *nb, unsigned long event,
|
||||
case NETDEV_CHANGE:
|
||||
case NETDEV_REGISTER:
|
||||
case NETDEV_UP:
|
||||
case NETDEV_DOWN:
|
||||
case NETDEV_GOING_DOWN:
|
||||
netdev_assert_locked_ops_compat(dev);
|
||||
fallthrough;
|
||||
case NETDEV_DOWN:
|
||||
case NETDEV_REBOOT:
|
||||
case NETDEV_UNREGISTER:
|
||||
case NETDEV_CHANGEMTU:
|
||||
case NETDEV_CHANGEADDR:
|
||||
case NETDEV_PRE_CHANGEADDR:
|
||||
case NETDEV_GOING_DOWN:
|
||||
case NETDEV_FEAT_CHANGE:
|
||||
case NETDEV_BONDING_FAILOVER:
|
||||
case NETDEV_PRE_UP:
|
||||
|
||||
Reference in New Issue
Block a user