summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorchenglong.ma <longpareto@gmail.com>2026-11-02 12:08:55 -0500
committerMichael S. Tsirkin <mst@redhat.com>2026-11-03 07:32:14 -0500
commitbb2e6f166547838fd7c320b01c90918b736f76e2 (patch)
treeff18318ced3383fd1ea90f55f08156ab6a191d62 /tools/perf/scripts/python
parent0f7bf47f5a0cc26320aa4b14f4504d03a07f4b74 (diff)
vduse: fix VA/PA confusion in the coherent page fault path
vduse_domain_get_coherent_page() assumes that iotlb entries above bounce_size were installed by vduse_domain_alloc_coherent(), so it treats map->addr as a physical address. But vduse registers with use_va = true, and when the device is bound to vhost_vdpa, vhost_vdpa_va_map() stores a userspace virtual address in map->addr, which vduse_domain_set_map() then copies into the same iotlb. A process holding the domain file descriptor across a rebind can therefore fault in an arbitrary physical page with read/write access, ignoring the entry permissions. Additionally, since the domain file mmap lacks VM_IO, the domain file itself can be mapped and passed to vhost_vdpa_va_map(), producing self-referential entries that bypass the coherent path check. To fix, only translate entries whose backing file is the domain file itself in vduse_domain_get_coherent_page(), reject such entries in vduse_domain_set_map() since only external mappings should be imported, and set VM_IO on the domain file mmap so vhost_vdpa_va_map() refuses to map it in the first place. Fixes: 8c773d53fb7b ("vduse: Implement an MMU-based software IOTLB") Cc: Xie Yongji <xieyongji@bytedance.com> Cc: stable@vger.kernel.org Reported-by: chenglong.ma <longpareto@gmail.com> Signed-off-by: chenglong.ma <longpareto@gmail.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Co-Authored-By: Claude Code <noreply@anthropic.com>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions