lkml.org 
[lkml]   [2004]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Cisco vpnclient prevents proper shutdown starting with 2.6.2
Thanks Gertjan, et al.

I have uploaded the vpnclient with your fix, and some of my cleanups
for Debian installation at:

http://www.anomalistic.org/vpnclient/vpnclient-linux-4.0.3.B-k9.tar.gz

Eugene

<quote sender="Gertjan van Wingerde">
> Hi Patrick, et al.
>
> Even though this seems to work, the real problem seems to lie in the cisco_ipsec module itself.
> It looks like it is registering a netdevice notifier at ioctl time, which seems to deadlock in the lock
> that has been introduced in 2.6.2. Moving the registration to module initialisation time (with the
> proper checks in the event handler itself to only act when VPN is up) seems to resolve the
> issue.
>
> Patch to Cisco vpnclient 4.0.3.B is below.
>
> MvG,
>
> Gertjan.
>
> diff -u --recursive vpnclient/interceptor.c vpnclient-new/interceptor.c
> --- vpnclient/interceptor.c 2003-10-30 02:27:34.000000000 +0100
> +++ vpnclient-new/interceptor.c 2004-02-24 21:26:36.000000000 +0100
> @@ -364,11 +364,6 @@
> error = VPNIFUP_FAILURE;
> goto error_exit;
> }
> - error = register_netdevice_notifier(&interceptor_notifier);
> - if (error)
> - {
> - goto error_exit;
> - }
>
> vpn_is_up = TRUE;
> return error;
> @@ -388,8 +383,6 @@
> {
> int i;
>
> - unregister_netdevice_notifier(&interceptor_notifier);
> -
> cleanup_frag_queue();
> /*restore IP packet handler */
> if (original_ip_handler.pt != NULL)
> @@ -436,6 +429,9 @@
> {
> struct net_device *dev = (struct net_device *) val;
>
> + if (!vpn_is_up)
> + return 1;
> +
> switch (event)
> {
> case NETDEV_REGISTER:
> @@ -853,6 +849,8 @@
> CNICallbackTable = *PCNICallbackTable;
> CniPluginDeviceCreated();
>
> + register_netdevice_notifier(&interceptor_notifier);
> +
> if ((status = register_netdev(&interceptor_dev)) != 0)
> {
> printk(KERN_INFO "%s: error %d registering device \"%s\".\n",
> @@ -876,6 +874,9 @@
> CniPluginUnload();
>
> unregister_netdev(&interceptor_dev);
> +
> + unregister_netdevice_notifier(&interceptor_notifier);
> +
> return;
> }
>
>
>
> >Hi Patrick,
> >
> >Just a data point..
> >
> >I reversed this patch on a system running 2.6.3-mm2, and vpnclient now
> >works.
> >
> >/harley
> >
> >> Newsgroups: fa.linux.kernel
> >> Subject: RE: Cisco vpnclient prevents proper shutdown starting with 2.6.2
> >> From: Patrick Toal <ptoal@cisco.com>
> >> To: linux-kernel@vger.kernel.org
> >> Date: Mon, 23 Feb 2004 01:36:17 GMT
> >>
> >> 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
> >>
>
> <snip>
> -
> 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/
>

--
Eugene TEO - <eugeneteo%null!cc!uic!edu> <http://www.anomalistic.org/>
1024D/14A0DDE5 print D851 4574 E357 469C D308 A01E 7321 A38A 14A0 DDE5
main(i) { putchar(182623909 >> (i-1) * 5&31|!!(i<7)<<6) && main(++i); }

-
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/

\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.027 / U:0.568 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site