linux - mincore 系统调用在用户态应用程序中有何用途?

标签 linux linux-kernel

Linux 的 mincore(2) 在用户态应用程序中有何用处?为什么它会暴露给非特权用户?

我可以想象一些数据库会利用知道哪些页面被缓存的优势,但还有哪些其他示例?

最佳答案

What is Linux mincore(2) useful for in userland applications?

我想说这很可能是基于意见的。我想到的是分析、统计、绩效评估和类似的东西。除此之外,我想不出其他现实的合法用例。

以下是我发现的使用 mincore 的一些程序示例(如您所见,所有分析/统计相关):

Why is it exposed to non-privileged users?

这实际上是一个关于 one year ago 的好问题。 ,当系统调用的语义没有明确定义时,这样的系统调用的存在是相当值得怀疑的。在内核版本 4.14.2 之前,mincore 实际上可能被滥用,从用户空间泄漏未初始化的内核内存(请参阅 CVE-2017-16994 和相关的 Project Zero bug report )。

从那时起,系统调用已被修补并且其语义已更新。进程通过调用它所能做的唯一事情就是查询有关其虚拟内存映射的信息。实际上没有什么有害的,只是 self 检查,因此非特权进程的可用性。没有真正的理由将其设为特权系统调用,如果这样做也可能被视为 API 破坏。

关于linux - mincore 系统调用在用户态应用程序中有何用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887126/

相关文章:

linux - 允许 Apache 运行的 Perl 脚本使用 system()

PHP 警告 : exec(): Unable to fork

linux - devm_kzalloc 是否提供连续内存?

c - 处理同步信号

linux - module_platform_driver初始化顺序

python - 使用多个键值连接两个不同的数据集

linux - 斯卡拉+Linux : Cannot find main class for jar

linux - 需要在 Linux 上运行 Mono (Xamarin Studio) Web 服务

C - Linux - 自定义内核模块来迭代进程的子进程会破坏内核日志和计算机

c - 来自内核线程的 get_user_pages_fast()