Messages in this thread | | | Subject | RE: Cisco vpnclient prevents proper shutdown starting with 2.6.2 | From | Patrick Toal <> | Date | Sun, 22 Feb 2004 20:33:38 -0500 |
| |
Sid Boyce wrote: > I tried using this client with up to 2.6.1-mm5 and ended up with Dead > processes for cvpnd and vpnclient, nothing else was affected, went > back to 2.4.x kernel. > Regards > Sid
Sid, et al.
First, before anyone starts deluging me with questions, you should know that even though my details say Cisco, I am an SE in the field, _not_ a developer. Second, please reply to me off-list, as I do not subscribe to the LK list.
That being said, I think I've tracked this down to a recent change in the net/core/dev.c file. I reversed the patch to register_netdevice_notifier below, and the vpnclient now works fine. This is called by the handle_vpnup routine in interceptor.c of the vpnclient kernel module.
I am _not_ a kernel developer, nor do I spend the majority of my time programming, so I haven't been able to figure out _why_ these changes cause the module to freeze. I'd be interested if anyone could tell me the answer to that question. :-)
Regards, Patrick
@@ -946,11 +996,29 @@ * The notifier passed is linked into the kernel structures and must * not be reused until it has been unregistered. A negative errno code * is returned on a failure. + * + * When registered all registration and up events are replayed + * to the new notifier to allow device to have a race free + * view of the network device list. */
int register_netdevice_notifier(struct notifier_block *nb) { - return notifier_chain_register(&netdev_chain, nb); + struct net_device *dev; + int err; + + rtnl_lock(); + err = notifier_chain_register(&netdev_chain, nb); + if (!err) { + for (dev = dev_base; dev; dev = dev->next) { + nb->notifier_call(nb, NETDEV_REGISTER, dev); + + if (dev->flags & IFF_UP) + nb->notifier_call(nb, NETDEV_UP, dev); + } + } + rtnl_unlock(); + return err; } /**
-- Patrick J. Toal, Systems Engineer, CCCS Cisco Systems Canada Co. 181 Bay Street, Bay Wellington Tower, Suite 3400 Toronto, Ontario, Canada M5J 2T3 Phone: 416-306-7735 Pager: 1-800-682-4726
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |