summaryrefslogtreecommitdiffstats
path: root/kernel/include
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-28 09:31:48 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-28 09:31:48 -0400
commitcc1de524d8cea869daacc652108c76f403eb542d (patch)
treef196e2bed47f5bbab369be0e4d38a526382044bc /kernel/include
parentf3c4419a64b69f85b8a7170ff5d15c0bef802a02 (diff)
downloadopen-iov-cc1de524d8cea869daacc652108c76f403eb542d.tar.gz
open-iov-cc1de524d8cea869daacc652108c76f403eb542d.zip
sema: never execute work decoded from swept RAM; pin only tracker sems
The content sweep reads arbitrary guest RAM and ran the full push decoder on every page, so fabricated method streams in unrelated data executed fills/copies: one boot scanned 65M pages, 'decoded' 124k pushes and ran dozens of memsets from false positives - writes into live guest memory (a guest kernel crashed in nvidia_uvm right after such a boot). - Swept pages now only permit the bounded semaphore-release writes; fills and copies execute only for pushes the pump read through a trusted ring translation. - Pushes read for a compute (GR) channel apply releases only: their method space is not the copy engine's, so aliased encodings must never become memory writes. - sempages.py derives the pages to pin from the client's tracker objects (sem object + sem memory) instead of matching bare sem-object shapes, which pinned 140 pages where the client has ~53 sems; shape scan remains as a fallback when no tracker resolves.
Diffstat (limited to 'kernel/include')
0 files changed, 0 insertions, 0 deletions