>  static int call_netdevice_notifiers_info(unsigned long val,
>                                        struct netdev_notifier_info *info)
>  {
> +     struct net *net = dev_net(info->dev);
> +     int ret;
> +
>       ASSERT_RTNL();
> +
> +     /* Run per-netns notifier block chain first, then run the global one.
> +      * Hopefully, one day, the global one is going to be removed after
> +      * all notifier block registrators get converted to be per-netns.
> +      */

Hi Jiri

Is that really going to happen? register_netdevice_notifier() is used
in 130 files. Do you plan to spend the time to make it happen?

> +     ret = raw_notifier_call_chain(&net->netdev_chain, val, info);
> +     if (ret & NOTIFY_STOP_MASK)
> +             return ret;
>       return raw_notifier_call_chain(&netdev_chain, val, info);
>  }

Humm. I wonder about NOTIFY_STOP_MASK here. These are two separate
chains. Should one chain be able to stop the other chain? Are there
other examples where NOTIFY_STOP_MASK crosses a chain boundary?

      Andrew

Reply via email to