- 论坛徽章:
- 0
|
内核打了 ipsec穿透补丁包ipsec_nat_traversal.patch 后,编译支持4G内存的运行是正常的,
但编译支持64G内存高端设备时,加载内核时直接报错。
Loading............................
Uncompressing Linux...
ran out of input data
-- System halted
就觉得很纳闷 以为是编译出错,重新编译还是一样。最后对补丁包代码一步步屏蔽测试。
发现时在udp.c这个文件的static int udp_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) 橙色代码段上
#if defined(CONFIG_KLIPS) && !defined(CONFIG_KLIPS_MODULE)
/* optomize only when we know it is statically linked */
extern struct inet_protocol esp_protocol;
esp = &esp_protocol;
#else
for (esp = (struct inet_protocol *)inet_protos[IPPROTO_ESP & (MAX_INET_PROTOS - 1)];
(esp) && (esp->protocol != IPPROTO_ESP);
esp = esp->next);
#endif
再缩小范围就是一开始获取esp指针,调用就出错了。也就是说esp是个野指针。
那为什么4G的就没有问题呢?大家有没有遇到这个问题。请赐教。谢谢各位大侠啦
|
|