list corruption
list corruption是内核检查链表有效性失败的报错,报错类型分为list_add corruption和list_del corruption。
- 原理
内核提供list_add和list_del,对传入的链表先检查链表的有效性(valid),检查通过后,修改链表增加或删除节点。如果检查链表失败,则上报corruption错误。检查和报错代码在内核lib/list_debug.c。
图1 报错类型list_add corruption和list_del corruption
这种错误通常为内存异常操作导致,例如内存踩踏、内存损坏等。
- 触发方法
用list.h的内核标准接口创建链表,非法修改链表节点的prev或next指针,再调用内核list_add/list_del接口。