【问题标题】:Is memory cleared by the Linux kernel when brk is reduced then increased again?当 brk 减少然后再次增加时,Linux 内核是否清除了内存?
【发布时间】:2010-11-22 13:43:59
【问题描述】:

我只是想知道用户程序通过 brk 系统调用释放的内存会发生什么,然后再次返回。是内核清除还是内容未定义?

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

感谢您的回复。

提姆

【问题讨论】:

    标签: memory-management linux-kernel system-calls brk


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-08-17
        • 2018-07-16
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 2011-04-09
        • 1970-01-01
        • 2020-01-13
        • 2019-04-08
        相关资源
        最近更新 更多