- Code: Select all
BUG: unable to handle kernel paging request at ffffffffa0015270
...
Pid: 12206, comm: cvpnd Tainted: P O 2.6.38-2-amd64 #1 Dell Inc. Latitude E6410/0667CC
RIP: 0010:[<ffffffffa043c8ed>] [<ffffffffa043c8ed>] add_netdev+0x7e/0xcc [cisco_ipsec]
......
Call Trace:
[<ffffffffa043cc44>] ? interceptor_ioctl+0x189/0x28c [cisco_ipsec]
[<ffffffff81273753>] ? dev_ifsioc+0x11/0x292
[<ffffffff81274ddc>] ? dev_ioctl+0x59c/0x63a
[<ffffffff810dcf0c>] ? ptep_clear_flush+0x29/0x35
[<ffffffff810d8789>] ? page_add_new_anon_rmap+0x6d/0x8e
[<ffffffff810d175d>] ? do_wp_page+0x671/0x689
[<ffffffff812609c1>] ? __sock_recvmsg_nosec+0x29/0x69
[<ffffffff81263e97>] ? compat_sock_ioctl+0xa3d/0xb66
[<ffffffff8112efd3>] ? compat_sys_ioctl+0x1bb/0xfb0
[<ffffffff8126260f>] ? sock_alloc_file+0xae/0x10c
[<ffffffff810f60a7>] ? fd_install+0x27/0x4e
[<ffffffff81262691>] ? sock_map_fd+0x24/0x2d
[<ffffffff810321b0>] ? sysenter_dispatch+0x7/0x2e
then one could try following patch :
- Code: Select all
--- vpnclient.org/linuxcniapi.h 2008-06-23 22:29:12.000000000 +0530
+++ vpnclient/linuxcniapi.h 2011-04-02 14:32:38.343532108 +0530
@@ -38,6 +38,10 @@
inject_status send_stat;
inject_status recv_stat;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+ struct net_device_ops const *netdev_opsp;
+ struct net_device_ops netdev_ops;
+#endif
} BINDING, *PBINDING;
/********************************************************************************/
--- vpnclient.org/interceptor.c 2011-04-02 14:39:10.095483881 +0530
+++ vpnclient/interceptor.c 2011-04-02 14:43:41.239483769 +0530
@@ -121,7 +121,7 @@
};
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
-static const struct net_device_ops vpn_netdev_ops = {
+static struct net_device_ops vpn_netdev_ops = {
.ndo_start_xmit = interceptor_tx,
.ndo_get_stats = interceptor_stats,
.ndo_do_ioctl = interceptor_ioctl,
@@ -280,8 +280,12 @@
/*replace the original send function with our send function */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+
Bindings[i].InjectSend = dev->netdev_ops->ndo_start_xmit;
- dev->netdev_ops->ndo_start_xmit = replacement_dev_xmit;
+ Bindings[i].netdev_opsp = dev->netdev_ops;
+ Bindings[i].netdev_ops = *dev->netdev_ops;
+ Bindings[i].netdev_ops.ndo_start_xmit = replacement_dev_xmit;
+ dev->netdev_ops = &Bindings[i].netdev_ops;
#else
Bindings[i].InjectSend = dev->hard_start_xmit;
dev->hard_start_xmit = replacement_dev_xmit;
@@ -308,7 +312,7 @@
{
rc = 0;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
- dev->netdev_ops->ndo_start_xmit = b->InjectSend;
+ dev->netdev_ops = b->netdev_opsp;
#else
dev->hard_start_xmit = b->InjectSend;
#endif
This patch needs to be applied after the patches mentioned in http://www.lamnk.com/blog/vpn/how-to-in ... la-64-bit/ is applied. i.e. after you have got the cisco vpn source to compilable on your system.
I have tested this only on 2.6.38 on amd64