Linux 嵌入式设备中的 Cisco vpnclient 导致内核错误

Linux 嵌入式设备中的 Cisco vpnclient 导致内核错误

我尝试在运行从 linux-2.6.39 编译的 vmlinux 的 linux 嵌入式设备中安装 cisco vpnclient。我可以成功插入驱动程序“cisco_ipsec.ko”。但是,插入时显示日志

cipsec0: Features changed: 0x00004800 -> 0x00004000

Cisco Systems VPN Client Version 4.8.02 (0030) kernel module loaded

我忽略了它。但是在执行“vpnclient verify”时,我得到了内核错误。日志如下:

Cisco Systems VPN Client Version 4.8.02 (0030) kernel module loaded
logrotate due, not forced
BUG: unable to handle kernel paging request at fc61ae98
IP: [<c1026cf7>] task_rq_lock+0x27/0x70
*pdpt = 00000000017a3001 *pde = 0000000000000000
Thread overran stack, or stack corrupted
Oops: 0000 [#1] PREEMPT SMP
last sysfs file: /sys/devices/virtual/net/cipsec0/uevent
Modules linked in: cisco_ipsec(P) fusion hardwareinfo gp500 intelce3100_io intelce3100_spi pd_hdmi SiI9XXX vidcap_ce4X00 sec_kernel ismdavcap_shim zvbi_intelce ismdvidenc ismdmux ismdviddec_v3 ismddemux_v3 ismdces_viddec_mux ismdces_vidparse_videnc ismdces_router ismdvidrend ismdvidpproc ismdremux ismdbufmon ismdaudio ismdclock_recovery pvrsrvkm pd_inttvenc_comp pd_inttvenc_cvbs gdl_server gen_timer ismdclock ismdcore ioctl_module mspod_drv intel_pic_uart intel_ce_pm iosf clock_control edl_thermal pace_spi_drv_linux intel_ce_flash sven_linux avcap_core system_utils_linux idl_smartcard idl_gpio idl_i2c idl_spi platform_config pal_linux osal_linux cosai_soc_utils cosai_irqproxy [last unloaded: cisco_ipsec]

Pid: -845642624, comm:  Tainted: P            2.6.39 #1
EIP: 0060:[<c1026cf7>] EFLAGS: 00010082 CPU: 0
EIP is at task_rq_lock+0x27/0x70
EAX: cebbac96 EBX: c179be40 ECX: 00000000 EDX: cd979730
ESI: cec02db0 EDI: cd989ef0 EBP: cd979730 ESP: cd979704
 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
Process  (pid: -845642624, ti=cd978000 task=cd988370 task.ti=ce92e6b8)

Stack:
 cd989ef0 cec02db0 cec02d80 0000000f c102d2a1 cd99df60 cec02db8 00000002
 00000000 c1246a25 cd99df60 00000082 cd99df60 cec02db0 cec02d80 c104dbd0
 c104dbe5 c104dd58 00000000 cec02d84 0000002c 7aa7e623 00000083 c104e565
Call Trace:

 [<c102d2a1>] ? try_to_wake_up+0x31/0x2f0
 [<c1246a25>] ? timerqueue_del+0x25/0x70
 [<c104dbd0>] ? update_rmtp+0x80/0x80
 [<c104dbe5>] ? hrtimer_wakeup+0x15/0x20
 [<c104dd58>] ? __run_hrtimer.clone.31+0x48/0xd0
 [<c104e565>] ? hrtimer_interrupt+0x185/0x270
 [<c1019ffe>] ? smp_apic_timer_interrupt+0x4e/0x90
 [<c1561d4e>] ? apic_timer_interrupt+0x2a/0x30
 [<c10a196f>] ? __kmalloc+0x6f/0x160
 [<e79125eb>] ? kernel_alloc+0x1b/0x50 [cisco_ipsec]
 [<e79125eb>] ? kernel_alloc+0x1b/0x50 [cisco_ipsec]
 [<e7912748>] ? INTER_CNI_Allocate_Buffer+0x48/0xf0 [cisco_ipsec]
 [<e7912397>] ? do_cni_send+0xc7/0x240 [cisco_ipsec]

 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]

 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
Code: 00 00 00 00 83 ec 10 89 7c 24 08 89 c7 89 6c 24 0c 89 d5 89 74 24 04 89 1c 24 bb 40 be 79 c1 9c 58 fa 89 45 00 8b 47 04 8b 40 10 <8b> 34 85 40 fc 72 c1 01 de 89 f0 e8 89 a6 53 00 8b 47 04 8b 40
EIP: [<c1026cf7>] task_rq_lock+0x27/0x70 SS:ESP 0068:cd979704
CR2: 00000000fc61ae98
---[ end trace 2f149dab3380c9f4 ]---
Kernel panic - not syncing: Fatal exception in interrupt
Pid: -845642624, comm:  Tainted: P      D     2.6.39 #1
Call Trace:
 [<c155ef03>] ? panic+0x61/0x13f
 [<c1005b76>] ? oops_end+0x86/0x90
 [<c1021b20>] ? no_context+0xc0/0x190
 [<c1021f20>] ? vmalloc_sync_all+0x10/0x10
 [<c1021d3f>] ? bad_area_nosemaphore+0xf/0x20
 [<c1022176>] ? do_page_fault+0x256/0x3f0
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e791279e>] ? INTER_CNI_Allocate_Buffer+0x9e/0xf0 [cisco_ipsec]
 [<c1021f20>] ? vmalloc_sync_all+0x10/0x10
 [<c1561f6e>] ? error_code+0x5a/0x60
 [<c1021f20>] ? vmalloc_sync_all+0x10/0x10
 [<c1026cf7>] ? task_rq_lock+0x27/0x70
 [<c102d2a1>] ? try_to_wake_up+0x31/0x2f0
 [<c1246a25>] ? timerqueue_del+0x25/0x70
 [<c104dbd0>] ? update_rmtp+0x80/0x80
 [<c104dbe5>] ? hrtimer_wakeup+0x15/0x20
 [<c104dd58>] ? __run_hrtimer.clone.31+0x48/0xd0
 [<c104e565>] ? hrtimer_interrupt+0x185/0x270
 [<c1019ffe>] ? smp_apic_timer_interrupt+0x4e/0x90
 [<c1561d4e>] ? apic_timer_interrupt+0x2a/0x30
 [<c10a196f>] ? __kmalloc+0x6f/0x160
 [<e79125eb>] ? kernel_alloc+0x1b/0x50 [cisco_ipsec]
 [<e79125eb>] ? kernel_alloc+0x1b/0x50 [cisco_ipsec]
 [<e7912748>] ? INTER_CNI_Allocate_Buffer+0x48/0xf0 [cisco_ipsec]
 [<e7912397>] ? do_cni_send+0xc7/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]
 [<e79124e3>] ? do_cni_send+0x213/0x240 [cisco_ipsec]
 [<e7912766>] ? INTER_CNI_Allocate_Buffer+0x66/0xf0 [cisco_ipsec]

答案1

您是否尝试过使用虚拟专用网络相反?vpnc是开源的;思科自己的 VPNclient 是闭源的。闭源内核模块在较新的内核上存在故障的坏名声。考虑到 2.6.39 并不是特别新,但它仍然足够新,以至于思科发布的 vpnclient 可能无法正确支持该内核。vpnc提供类似的功能,但不依赖于任何闭源组件,允许您重新编译它以支持您自己的环境。更好的是,vpnc使用tun内置于主流 Linux 内核的驱动程序,因此它不需要自己的自定义内核模块。

此外,Colin 't Hart 的评论可能是正确的,即您的“嵌入式设备”供应商可能具有与此内核模块不兼容的内核定制。我希望这种不兼容性会在编译时出现并阻止您首先构建模块,但情况不一定如此。

相关内容