On Mon, 07 Apr 2025 21:46:09 +0200 Antonio Quartulli wrote: > +static int ovpn_netdev_notifier_call(struct notifier_block *nb, > + unsigned long state, void *ptr) > +{ > + struct net_device *dev = netdev_notifier_info_to_dev(ptr); > + > + if (!ovpn_dev_is_valid(dev)) > + return NOTIFY_DONE; > + > + switch (state) { > + case NETDEV_REGISTER: > + /* add device to internal list for later destruction upon > + * unregistration > + */ > + break; > + case NETDEV_UNREGISTER: > + /* can be delivered multiple times, so check registered flag, > + * then destroy the interface > + */ > + break; > + case NETDEV_POST_INIT: > + case NETDEV_GOING_DOWN: > + case NETDEV_DOWN: > + case NETDEV_UP: > + case NETDEV_PRE_UP: > + default: > + return NOTIFY_DONE; > + }
Why are you using a notifier to get events for your own device? > + return NOTIFY_OK; > +} > +MODULE_DESCRIPTION("OpenVPN data channel offload (ovpn)"); > +MODULE_AUTHOR("(C) 2020-2025 OpenVPN, Inc."); Companies can't author code, only people. Note that MODULE_AUTHOR() is optional.