这个值出现在poison.h(linux source\include\linux\poison.h)中:
/*
* Architectures might want to move the poison pointer offset
* into some well-recognized area such as 0xdead000000000000,
* that is also not mappable by user-space exploits:
*/
Run Code Online (Sandbox Code Playgroud)
我只是好奇价值的特殊性0xdead000000000000?
很确定这只是deadbeef的变种; 即它只是一个容易识别的信号值(见deadbeef的http://en.wikipedia.org/wiki/Hexspeak)
指针中毒的想法是确保在不导致崩溃的情况下不能使用中毒列表指针.假设您将结构与其所在的列表取消链接.然后,您希望使指针值无效,以确保它不会再次用于遍历列表.如果代码中的某个地方有一个错误 - 一个悬空指针引用 - 你要确保任何试图通过这个现在未链接的节点跟踪列表的代码立即崩溃(而不是稍后在一些可能不相关的代码区域中).
当然,只需在其中放入一个空值或任何其他无效地址,就可以中毒指针.使用0xdead000000000000作为基值可以更容易区分显式中毒的值与初始化为零或被零覆盖的值.它可以与偏移量(LIST_POISON {1,2})一起使用,以创建多个不同的毒性值,这些值都指向虚拟地址空间的不可用区域,并且一目了然可识别为无效.