Skip to content

feat(mm): 实现 VM_DONTCOPY 标志支持#1349

Merged
fslongjin merged 1 commit intoDragonOS-Community:masterfrom
fslongjin:fix-madvise-dontfork-handling
Nov 6, 2025
Merged

feat(mm): 实现 VM_DONTCOPY 标志支持#1349
fslongjin merged 1 commit intoDragonOS-Community:masterfrom
fslongjin:fix-madvise-dontfork-handling

Conversation

@fslongjin
Copy link
Member

@fslongjin fslongjin commented Nov 6, 2025

  • 在地址空间克隆时跳过标记为 VM_DONTCOPY 的 VMA
  • 移除已拷贝的 VM_DONTCOPY 区域的页面映射
  • 更新测试用例以验证 MADV_DONTFORK 功能

TODO: 支持文件映射页面的VM_DONTCOPY (当前实现过不了文件映射的DONTCOPY测例)

- 在地址空间克隆时跳过标记为 VM_DONTCOPY 的 VMA
- 移除已拷贝的 VM_DONTCOPY 区域的页面映射
- 更新测试用例以验证 MADV_DONTFORK 功能

Signed-off-by: longjin <longjin@DragonOS.org>
@fslongjin fslongjin requested review from Copilot and sparkzky November 6, 2025 14:50
@github-actions github-actions bot added the enhancement New feature or request label Nov 6, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements support for the MADV_DONTFORK system call flag, which prevents virtual memory areas (VMAs) from being copied to child processes during fork operations. The implementation adds logic to skip VM_DONTCOPY-flagged VMAs during address space cloning and unmaps any pages that were inadvertently copied.

  • Added collection and handling of VM_DONTCOPY VMAs during address space cloning
  • Skip VMA copying for regions marked with VM_DONTCOPY flag
  • Unmap pages from VM_DONTCOPY regions in the new address space

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
user/apps/tests/syscall/gvisor/blocklists/madvise_test Removed MadviseDontforkTest.DontforkAnonPrivate test from blocklist, indicating it now passes
kernel/src/mm/ucontext.rs Implemented VM_DONTCOPY (MADV_DONTFORK) support in the address space cloning logic

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@fslongjin fslongjin merged commit dee2e02 into DragonOS-Community:master Nov 6, 2025
18 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants