今天遇到一个倒霉问题,调试了许久
- int func(..., uint16_t link_id)
- {
- ha_unit_t *ha_unit;
- TAILQ_FOREACH(link, &ha_unit->sec_netlink, next_link) {
- if (link->id == link_id) {
- TAILQ_REMOVE(&ha_unit->sec_netlink, link, next_link);
- FREE(link, M_HA_CONFIG);
- }
- }
- }
运行到这个函数时kernel总是panic, 反复检查还是不得其解,后来发现是因为
ha_unit中的id是uint32_t类型, 而形参中得link_id是uint16_t类型
在if (link->id == link_id)这句中导致
FREE(link, M_HA_CONFIG)发生了错误, 进而panic
悲催的问题。。。。。
阅读(355) | 评论(0) | 转发(0) |