Files
Ayush RanjanandAlessio Ricci Toniolo 83f9a0d16e Add RDMA uverbs device proxy
Add pkg/sentry/devices/rdmaproxy, a passthrough proxy for
/dev/infiniband/uverbs* that lets a sandboxed application drive RDMA verbs
against the host's ib_uverbs devices.

The proxy forwards the modern RDMA_VERBS_IOCTL to a host uverbs FD. Every
request is validated against an explicit per-(object, method) schema, and each
attribute is translated strictly by its schema-declared ABI type rather than by
probing guest memory: input pointers are copied into sentry buffers, output
buffers are staged and copied back, object handles are passed through, and file
descriptors are translated between the sandbox and the host. Interpreting an
attribute's direction from the fixed kernel ABI (additive-only, stable since
Linux 4.20) instead of from the guest's memory is what prevents a malicious
guest from coercing the proxy into an out-of-bounds copy.

DMA buffers referenced by memory-region registrations and by the vendor
driver-private CQ/QP data are pinned and mirrored into the sentry's address
space so the host kernel can pin_user_pages on them. The mlx5 (ConnectX)
driver-private layout lives in a vendor plug-in, pkg/sentry/devices/rdmaproxy/
cxproxy, registered with the core at init time.

A new MemoryManager.FindVMARange helper bounds a driver-private DMA buffer whose
backing region the guest describes by start address only.

Co-authored-by: Alessio Ricci Toniolo <[email protected]>
2026-08-02 23:31:51 +00:00
..
2026-08-02 23:31:51 +00:00
2026-08-02 23:31:51 +00:00