C- kfree是否用0x6b填充内存



我遇到了一个错误,我发现我以某种方式将记忆被别人的每个字符填充为'0x6b'。(我通过printk而不是冰检查记忆。)经过很多调试后,我发现这是因为我不小心对记忆进行了kfree(由kmalloc分配)。

我很好奇谁填充" 0x6b"并跟踪KFree代码,但找不到这样做的代码。它是Linux内核的调试机制还是还有其他原因?

(env是内核4.9)

谢谢!

是Linux内核的调试机制...?

是的,它被称为"平板中毒"。

这是在内存释放的源中声明的0x6b

https://elixir.free-electrons.com/linux/v4.9/source/include/linux/poison.h#l56

这是关于它的简短介绍:

https://whatilearned2day.wordpress.com/2006/12/13/slab-poisoning/

最新更新