diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-20 05:34:52 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-20 05:34:52 -0400 |
| commit | 720d3f5fa8b8bdbb947826927ae907cfc7d0ed56 (patch) | |
| tree | 99d3fa39c156291089e496a5a58d1ad0aa20298e /tools/rmq/grctx_oracle.c | |
| parent | ae534205925529fc06e0539218f0ddf9fe5f835a (diff) | |
| download | open-iov-720d3f5fa8b8bdbb947826927ae907cfc7d0ed56.tar.gz open-iov-720d3f5fa8b8bdbb947826927ae907cfc7d0ed56.zip | |
vgsp: pin-backed translation wins the write-side ledger divergence (r336)
The m180 unification redirected a divergent write to the ledger's page
(where an earlier write landed) even when the current translation was
pin-backed (guest pagemap truth, op_tr_src == 1). When the guest
remaps/reuses a VA (free + reallocate, or migration), the ledger page is
freed and can be reallocated by the guest kernel: the redirected write
then smears client copy data over kernel memory. Observed on the r335
vector_add run: an RM map/AVL node's pointer field held client c-data
(floats 551.25/552.0), the free-path traversal faulted
(mapFindLEQ_IMPL/_mapInsertBase), and the guest panicked
(Attempted to kill init). 4448 write-side divergences in that run.
Now a pin-backed translation wins: the write goes to the fresh page and
the ledger store after the write re-homes the entry, so readers converge
on the same page. Non-pin translations (2..5) keep the m180 redirect -
they can carry stale PTEs (m169) and the write history stays the
authority there. New counter sema-svc ledger pinwins.
Diffstat (limited to 'tools/rmq/grctx_oracle.c')
0 files changed, 0 insertions, 0 deletions
