linux-user, fix: Limit private mmap shadows to SQLite - #389
Open
ganjue66da wants to merge 1 commit into
Open
Conversation
Wine maps SQLite database files privately. The host-page fragment fallback copies data with pread into anonymous memory, so later writes through the file descriptor are not visible. WXWork can then reopen a document approval as a white view. The initial opt-in shadow path covered every writable file descriptor. On UOS this also shadowed writable PE cache files. WXWork could then fault in over_page_write during startup. Require MAP_PRIVATE and a writable descriptor whose first 16 bytes match the SQLite database header. Other writable files keep the normal fragment fallback, while SQLite fragments remain file-backed when LATX_PRIVATE_MMAP_SHADOW=1. Tests: - UOS WXWork 5.0.0.6008: launch and reopen one document approval - Linux and Wine SQLite regression: 10,000 mmap query/update iterations Signed-off-by: Wenqiang Wei <weiwenqiang@mail.ustc.edu.cn>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wine maps SQLite database files privately. The host-page fragment fallback copies data with pread into anonymous memory, so later writes through the file descriptor are not visible. WXWork can then reopen a document approval as a white view.
The initial opt-in shadow path covered every writable file descriptor. On UOS this also shadowed writable PE cache files. WXWork could then fault in over_page_write during startup.
Require MAP_PRIVATE and a writable descriptor whose first 16 bytes match the SQLite database header. Other writable files keep the normal fragment fallback, while SQLite fragments remain file-backed when LATX_PRIVATE_MMAP_SHADOW=1.
Tests:
Summary / 变更说明
Validation / 验证
Checklist / 检查项
CONTRIBUTING.md. / 我已阅读CONTRIBUTING.md。git commit -s). /每个提交都包含 DCO 签署(
git commit -s)。are not applicable. /
我已提供相关构建或测试结果,或说明了不适用的原因。