1

我只是想知道用户程序通过 brk 系统调用释放的内存会发生什么,然后又回来了。内核是否将其清除或内容未定义?

我相信内核在通过 brk 新分配页面时会清除它们,但是如果返回该页面,然后再次请求返回,我无法确定是否将它们全部归零。我正在浏览 lxr.linux.no 试图找出答案。我也会看看这篇文章中建议的书。

感谢您的回复。

蒂姆

4

2 回答 2

3

你会得到一个新的归零页面: http: //lxr.linux.no/#linux+v2.6.30.5/mm/memory.c#L2580

必须清除新页面的内容。它可能包含敏感信息,请考虑安全性。

于 2009-08-30T07:48:23.387 回答
1

IIRC 按需提供。因此,当一个页面被逐出时,内核将其单独保留,但是当分配给新用户/使用时它将被清除(其中重新增长的 brk 将被计算在内)。有各种技巧可以将新的匿名页面映射到“零页面”,然后在写入时将其交换为真正清除的页面。

如果您担心信息泄漏,则不应将未分配的页面推送到交换,尽管各种冷启动攻击可能对它们起作用。

有关更多信息,请参阅最近的 LWN 文章:http: //lwn.net/Articles/340370/

于 2009-08-25T11:16:28.837 回答